如何在iOS应用中保存数据

时间:2016-08-04 18:57:03

标签: ios save

我正在开发一个iOS应用程序,每天都会生成随机的励志报价。 当我关闭应用程序时,再次打开它并单击生成每日报价的按钮,它会显示一个新的。

你能帮帮我吗,我怎么能在一天中保存相同的报价,当一天结束时会产生一个新报价。

我想每天保留1个报价,而不是每次打开应用时都有1个报价。

1 个答案:

答案 0 :(得分:1)

您可以通过保存引用及其在NSUserDefaults中生成的时间来实现此目的(在Swift3中,这将被称为UserDefaults

首先,生成引号,并将其作为String存储在变量中。我们称之为myQuote。接下来,通过初始化一个新的NSDate对象(从Swift 3,Date开始)获取当前时间,并获取自1970年以来的时间间隔(在Swift中为.timeIntervalSince1970)并将其存储在一个变量,我们称之为myTime

然后,当用户打开应用程序时,获取存储的时间,并检查它是否超过一天。如果是,则生成新报价并存储。如果不是,只显示存储的报价。

以下是使用 Swift 2

进行此操作的示例
// 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)

在Swift 3中,NSUserDefaultsNSDate的所有实例将分别替换为新名称UserDefaultsDate

每当您想要显示引号时,都应该调用上面的代码。在您的情况下,这很可能是您的viewDidLoad函数