我正在開發一款每天都會產生隨機勵志名言的iOS應用程序。 當我關閉應用程序時,再次打開它並點擊生成每日報價的按鈕,它會顯示一個新的報價。如何在iOS應用程序中保存數據
你能幫我,我怎麼能保存同一報價遍佈一天,當一天過去生成一個新的。
我想每天保持1條報價,而不是每次打開應用時報價1條。
我正在開發一款每天都會產生隨機勵志名言的iOS應用程序。 當我關閉應用程序時,再次打開它並點擊生成每日報價的按鈕,它會顯示一個新的報價。如何在iOS應用程序中保存數據
你能幫我,我怎麼能保存同一報價遍佈一天,當一天過去生成一個新的。
我想每天保持1條報價,而不是每次打開應用時報價1條。
你可以通過保存的報價,它是在NSUserDefaults
生成的時間(以Swift3實現這一目標,將其稱爲UserDefaults
首先,生成你的報價,並將其存儲在一個變量的字符串。我們「會打電話給這個myQuote
。接下來,通過初始化一個新NSDate
對象(如雨燕3,Date
的),並獲得1970年以來的時間間隔獲取當前時間,(在斯威夫特.timeIntervalSince1970
),並將其存儲在一個變量,我們將調用myTime
。
然後,當用戶打開應用程序,得到了保存時間,並檢查是否它已經過了一天了。如果是,則生成一個新報價並存儲它。如果不是,只顯示存儲的報價。
下面是如何來使用這個斯威夫特
// get the quote stored in NSUserDefaults for the key "storedQuote"
let storedQuote: String? = NSUserDefaults.standardUserDefaults().stringForKey("storedQuote")
// get the time stored in NSUserDefaults for the key "storedTime"
let storedTime: Double = NSUserDefaults.standardUserDefaults().doubleForKey("storedTime")
// get the current time interval since 1970
let currentTime = NSDate().timeIntervalSince1970
let quoteToDisplay: String
// if the stored quote doesn't exist, or it has been more than
// a day (60 * 60 * 24 seconds) since the quote was stored
if(storedQuote == nil || currentTime - storedTime >= (60 * 60 * 24)){
// generate a new quote
quoteToDisplay = myFunctionForGeneratingANewQuote()
// store the newly generated quote for the key "storedQuote"
NSUserDefaults.standardUserDefaults().setObject(quoteToDisplay, forKey: "storedQuote")
// store the current time for the key "storedTime"
NSUserDefaults.standardUserDefaults().setObject(currentTime, forKey: "storedTime")
NSUserDefaults.standardUserDefaults().synchronize()
}
else{
// otherwise, the quote != nil and was generated less than a day ago
// so this one should be displayed
quoteToDisplay = storedQuote!
}
//display quoteToDisplay
myFunctionForDisplayingAQuote(storedQuote)
在斯威夫特3的例子中,NSUserDefaults
和NSDate
所有實例將與他們的新名字,分別UserDefaults
和Date
所取代。
只要你想顯示報價,你應該調用上面的代碼。在你的情況,這很可能是你的viewDidLoad
功能
非常感謝。 你能否給我提供一個示例代碼示例。我對Swift很陌生,對我來說有點困難。 目前我正在閱讀來自json文件的引用,如果這有助於您 –
沒問題!我確實爲你提供了一個代碼示例 - 用你的函數替換'myFunctionForGeneratingANewQuote()'...以及生成一個新的引用,'myFunctionForDisplayingAQuote(storedQuote)'用你顯示報價'storedQuote'的方式。請務必閱讀註釋,以便您真正理解*代碼的作用 – Jojodmo
非常感謝您的幫助。你太棒了!你會檢查我的代碼嗎? –
谷歌'NSUserDefaults',並給它一試。 – Bek