2016-07-28 66 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条目全球?如果没有,是否有办法让他们成为全球? –

相关问题