2016-08-04 71 views
-2

我正在開發一款每天都會產生隨機勵志名言的iOS應用程序。 當我關閉應用程序時,再次打開它並點擊生成每日報價的按鈕,它會顯示一個新的報價。如何在iOS應用程序中保存數據

你能幫我,我怎麼能保存同一報價遍佈一天,當一天過去生成一個新的。

我想每天保持1條報價,而不是每次打開應用時報價1條。

+0

谷歌'NSUserDefaults',並給它一試。 – Bek

回答

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的例子中,NSUserDefaultsNSDate所有實例將與他們的新名字,分別UserDefaultsDate所取代。

只要你想顯示報價,你應該調用上面的代碼。在你的情況,這很可能是你的viewDidLoad功能

+0

非常感謝。 你能否給我提供一個示例代碼示例。我對Swift很陌生,對我來說有點困難。 目前我正在閱讀來自json文件的引用,如果這有助於您 –

+0

沒問題!我確實爲你提供了一個代碼示例 - 用你的函數替換'myFunctionForGeneratingANewQuote()'...以及生成一個新的引用,'myFunctionForDisplayingAQuote(storedQuote)'用你顯示報價'storedQuote'的方式。請務必閱讀註釋,以便您真正理解*代碼的作用 – Jojodmo

+0

非常感謝您的幫助。你太棒了!你會檢查我的代碼嗎? –

相關問題