如果应用程序在10秒内死亡,NSUserDefaults丢失新保存的数据
我正在寻找比NSUserDefaults更快的方式来保存用户的喜好。 我发现如果应用程序在写入NSUserDefaults大约10秒钟内死亡,它将不会永久保存。 我使用默认值保存自定义铃声的path,自定义图像的path,地图坐标,基本上只是用户定义的偏好。 使用核心数据更好的select? SQLite的? 什么被接受为最快和最轻量级?
您需要确保调用同步以立即保存数据。
[[NSUserDefaults standardUserDefaults] synchronize];
从苹果的类参考 :
因为此方法是定期自动调用的,所以只有当您不能等待自动同步(例如,如果您的应用程序即将退出),或者如果要将用户默认更新为磁盘上的内容你没有做任何改变。
而要回答你的第二个问题,这实际上取决于你想存储多less数据。 NSUserDefaults被devise为存储非常less量的数据(用于首选项),例如切换开关的状态等等。您可以在这里存储图像和铃声的path,但这不是明智的build议。 我的意思是你可以,但可能不应该。
核心数据是一个更好的方法,如果你打算存储这些path的很多,因为它是非常可扩展性和performance非常好。 总的来说,如果你需要存储大量的数据,用户核心数据,或作为另一种替代方式将path存储在文档目录中的plist中。
- 如何获取只是对象的ID,但也包括CoreData的行数据?
- 最有效的使用NSPredicate OR语句进行search的方法
- 如何使用NSPredicate使用今天的NSDate获取对象?
- 我如何解决NSInternalInconsistencyException',原因:'+ entityForName:失败报告
- iOS的Swift的 – 如何存储arrays与核心数据?
- 核心数据keyPathsForValuesAffectingValueForKey只调用关系,而不是属性
- NSFetchedResultsController和NSOrderedSet关系
- 访问核心数据模型/联系人数据库的间歇性错误
- NSFetchedResultsController不会调用controllerDidChangeContent:更新到未获取的NSManagedObject