2017-02-17 78 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 –