2016-07-28 29 views
1

我試圖根據記錄數據的一天保存數據(例如,用戶在2016年7月29日有5個蘋果吃)。Swift:如何將數據保存到某個日期

我無法在文檔中找到保存數據而不創建日曆事件的方法。數據是否必須存儲在一個數組中,該數組既包含吃蘋果的數量,也包括使用結構體吃蘋果的那一天?以及如何訪問數據?會通過使用全局變量嗎?

+1

要保存多長時間?一旦它被保存,你將如何使用它? – Wain

回答

1

你可以使用dictionaries

您可以創建這樣一個字典:

var applesPerDay = [NSDate: Int]() 

你會將該值設置爲這樣的日子:

applesPerDay[NSDate()] = 5 

你可以打印所有按照時間順序排序的值如下:

for key in applesPerDay.keys.sort({$0.compare($1) == .OrderedAscending}) { 
    //you may want to format the date 
    print("On day \(key) I ate \(applesPerDay[key]!) apples") 
} 

如果您需要保留數據,你可以使用NSUserDefaults

+0

謝謝你的回答!快速提問; 1)我怎樣才能使這些訪問所有視圖控制器? 2)如果要自動記錄數據,這會工作嗎?在ViewController的viewDidLoad中,如果我只是在你的答案中添加了代碼,那麼每一天的信息都是唯一的嗎? (假設'5'每天會有所不同) –

+0

1.您可以將它保存在NSUserDefaults中(很多全局變量通常是軟件設計不佳的一個症狀)2.是的,它是唯一的,但僅適用於每個抽象幾分之一秒),而不是每一天。如果你想使它獨一無二的話,可以使用[NSDateFormatter](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/)並將日期保存爲字符串(使用'[String:String]'字典) – Daniel

+0

1.如果保存許多全局變量是不好的做法,那麼還有其他方法嗎? (例如,刪除超過60天的輸入)。最後,您將如何訪問某一天的數據如果你想知道在2016年7月29日吃了多少蘋果。感謝您的幫助,錯誤地將您的答案標記爲正確 –

2

對於你看什麼,推薦的方法是使用CoreDataNSUserDefaults旨在讓您保留相對較小的「配置」數據位。

CoreData允許您定義一個對象層次結構,然後對存儲的數據執行搜索,排序和各種SQL風格的查詢。

檢查周圍的很多教程之一,在大多數情況下,我建議雷Wenderlich的一個,像這樣的一個Intro to CoreData

注:我不是,我也沒有曾經,隸屬於雷Wenderlich :)

+0

這個頁面非常有用,謝謝你的迴應! –

+0

後續問題; coredata條目全球?如果沒有,是否有辦法讓他們成爲全球? –

相關問題