2016-08-04 3 views
-2

Я разрабатываю приложение iOS, которое генерирует случайную вдохновляющую цитату каждый день. В тот момент, когда я закрываю приложение, откройте его еще раз и нажмите кнопку, которая генерирует ежедневную цитату, она показывает мне новую.Как сохранить данные в приложении iOS

Можете ли вы мне помочь, как я могу сохранить одну и ту же цитату в течение дня, а когда закончится день, создайте новую.

Я хочу сохранить 1 котировку в день, а не 1 цитату для каждого раза, когда я открываю приложение.

+0

Google 'NSUserDefaults' и попробуйте. – Bek

ответ

1

Вы могли бы добиться этого за счет экономии цитаты и время, был создан в NSUserDefaults (в Swift3, это будет называться UserDefaults

Во-первых, сгенерировать цитату, и сохранить его в виде строки в переменной. Мы Назовите это myQuote. Затем получите текущее время, инициализируя новый объект NSDate (начиная с Swift 3, Date) и получив временной интервал с 1970 года (.timeIntervalSince1970 в Swift) и сохраните его в переменной, которую мы будем звоните 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, все экземпляры NSUserDefaults и NSDate будут заменены их новыми именами, UserDefaults и Date соответственно.

Всякий раз, когда вы хотите отобразить цитату, вы должны позвонить по коду выше. В вашем случае это скорее всего будет вашим viewDidLoad функцией

+0

Большое спасибо. Не могли бы вы предоставить мне пример кода. Я новичок в Swift, и для меня это немного сложно. На данный момент я читаю цитаты из json-файла, если это вам поможет –

+0

Нет проблем! Я предоставил вам пример кода - просто замените 'myFunctionForGeneratingANewQuote()' своей функцией для ... ну, создавая новую цитату и 'myFunctionForDisplayingAQuote (storedQuote)' так, как вы бы указали цитату 'storedQuote' , Не забудьте также прочитать комментарии, так что вы на самом деле * понимаете *, что делает код – Jojodmo

+0

Большое вам спасибо за вашу помощь. Ты обалденный! Не могли бы вы проверить мой код? –

Смежные вопросы