如何使用iOS + Swift在本地存储我的数据?
我是Swift iOS开发的新产品。我想在本地存储我的数据(名称,image_path),而我的应用程序无法上载它(没有互联网连接等)。我已经在两天之前开始了我的工作,但对于我的问题还没有得到任何好的结果。我也曾在Realm和SQlite数据库上工作过,但仍未取得适当的成功。请协助我,为我提供适当的数据存储(名称,image_path)到本地数据库的流程。 谢谢。如何使用iOS + Swift在本地存储我的数据?
NSUserDefaults的使用基本上有选择本地存储在iOS上:
Core Data
- 第三方DB(
Realm
等) NSKeyedArchiver/NSCoding
NSUserDefaults
Keychain Services
1(核心数据)是最好的,当你想坚持的大量数据以结构化的格式,例如:您的联系人/地址簿,音乐库。
2(Realm /第三方数据库)在类似的场景中很有用。核心数据可以有点密集/ turgid使用,这就是第三方抽象/替代方案存在的原因。
3(的NSKeyedArchiver)是一个相当有趣的选择,它有效地让你“冻结”的对象(即符合NSCoding
协议),并将它们存储到磁盘。如果您的数据被表示为自定义对象模型,那就太好了。
4(NSUserDefaults)实际上只用于存储微数据/状态。想想像:高分整数,视图层次结构中的位置,游戏中的昵称。
5(Keychain服务)只是如果你想存储的图像UIView的对象的话,还真核心数据或NSKeyArchives用于安全存储凭据(用户名/密码)
可能是最好的。
非常感谢你@Woodstock – AppleDroid
@AndroidME,很高兴,任何问题都让我知道。 – Woodstock
不要在'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)
}
NSUserDefaults不是数据库,只能用于......用户默认值。但OP需要存储数据(*图像*)。 NSUserDefaults将是一个非常糟糕的解决方案。 – Moritz
@ZaidPathan我正在使用iOS + Swift,您的链接仅适用于iOS。 – AppleDroid
在过去,我与Realm一起工作,这是很好的选择,为什么你没有发现它为你工作? –