如何使用iOS + Swift在本地存储我的数据?

问题描述:

我是Swift iOS开发的新产品。我想在本地存储我的数据(名称,image_path),而我的应用程序无法上载它(没有互联网连接等)。我已经在两天之前开始了我的工作,但对于我的问题还没有得到任何好的结果。我也曾在Realm和SQlite数据库上工作过,但仍未取得适当的成功。请协助我,为我提供适当的数据存储(名称,image_path)到本地数据库的流程。 谢谢。如何使用iOS + Swift在本地存储我的数据?

+0

@ZaidPathan我正在使用iOS + Swift,您的链接仅适用于iOS。 – AppleDroid

+0

在过去,我与Realm一起工作,这是很好的选择,为什么你没有发现它为你工作? –

NSUserDefaults的使用基本上有选择本地存储在iOS上:

  • Core Data
  • 第三方DB(Realm等)
  • NSKeyedArchiver/NSCoding
  • NSUserDefaults
  • Keychain Services

1(核心数据)是最好的,当你想坚持的大量数据以结构化的格式,例如:您的联系人/地址簿,音乐库。

2(Realm /第三方数据库)在类似的场景中很有用。核心数据可以有点密集/ turgid使用,这就是第三方抽象/替代方案存在的原因。

3(的NSKeyedArchiver)是一个相当有趣的选择,它有效地让你“冻结”的对象(即符合NSCoding协议),并将它们存储到磁盘。如果您的数据被表示为自定义对象模型,那就太好了。

4(NSUserDefaults)实际上只用于存储微数据/状态。想想像:高分整数,视图层次结构中的位置,游戏中的昵称。

5(Keychain服务)只是如果你想存储的图像UIView的对象的话,还真核心数据或NSKeyArchives用于安全存储凭据(用户名/密码)

可能是最好的。

查看更多信息:NSCodingCore DataKeychain

+0

非常感谢你@Woodstock – AppleDroid

+0

@AndroidME,很高兴,任何问题都让我知道。 – Woodstock

+3

不要在'NSUserDefaults'中存储密码,这是不安全的。它们应该存储在钥匙串中。 – dan

用于本地存储::

func getPrefNameInt(key: NSString,value: Int) ->Int{ 
    let prefDefault = NSUserDefaults.standardUserDefaults() 
    if let keyVal: AnyObject = prefDefault.objectForKey(key as String){ 
     return keyVal as! Int 
    }else{ 
     return value 
    } 
} 
func updatePrefInt(key: NSString,value: Int){ 
    let prefDefault = NSUserDefaults.standardUserDefaults() 
    prefDefault.setInteger(value, forKey: key as String) 
} 
+2

NSUserDefaults不是数据库,只能用于......用户默认值。但OP需要存储数据(*图像*)。 NSUserDefaults将是一个非常糟糕的解决方案。 – Moritz