2017-02-17 46 views
-2

有没有简单的方法来存储我的应用程序的数据在Swift 3?Swift 3缓存

我想以某种方式存储单个对象。我试过UserDefaults.standard.set(my_object, forKey: "my_object"),但它似乎没有工作。

我把这个代码在AppDelegate.swift在func applicationWillTerminate(_ application: UIApplication)

另外,我想读这个对象早在func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool,应用程序启动时。

回答

1

UserDefaults是最简单的方法。

func applicationWillTerminate(_ application: UIApplication)

把这个代码在AppDelegate.swift嗯,这是非常愚蠢的,因为该方法基本上都不叫。将信息保存到UserDefaults某处,以便您的代码能够真正运行。 applicationDidEnterBackground(_:)applicationWillResignActive(_:)是可能的选择,但要确定的方法只是在信息发生变化时保存信息。

另外,我想在func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool的时候读取这个对象,当应用程序启动时。

那么,99.9%的应用程序启动时间,该方法将不会被调用。但如果方法调用,很好,继续并重新读取对象。

+0

我的对象不在属性列表中(它不是标准类型,如NSDate或NSNumber)。我怎样才能将这种对象添加到UserDefaults? –

+0

非常好的问题!但是这是一个Stack Overflow已经被回答了很多次的问题,所以只需要进行搜索。你可以在UserDefaults中存储任何东西;你只需要把它存档成一个NSData,并且这样做。 (可能会帮助您浏览我书中的讨论:http://www.apeth.com/iOSBook/ch36​​.html#_saving_and_reading_files) – matt

+0

@BartoszWoźniak为了在UserDefaults中存储自定义类对象,请阅读有关NSCoding协议,编码 - 解码,存档 - 取消存档 http://stackoverflow.com/questions/37980432/swift-3-saving-and-retrieving-custom-object-from-userdefaults –