Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 保存日期和值的适当结构_Ios_Objective C_Uitableview - Fatal编程技术网

Ios 保存日期和值的适当结构

Ios 保存日期和值的适当结构,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我正在尝试保存用户信息并将其显示在UITableViewCell中,如下所示: (日期)-(价值) 比如: (2014年12月12日)-(240磅) 我不确定使用哪种结构类型。我需要保存两个不同的对象(上面描述的nsdate和nstring值),并能够按键(日期和值)遍历它们,以便在uitableview中显示每个对象的文本 NSDictionary . 字典类似于数组,但允许您存储对象和键。字典允许您为对象指定特定的键,然后从其键检索对象。以下是直接来自苹果的描述: NSDictionary类

我正在尝试保存用户信息并将其显示在UITableViewCell中,如下所示:

(日期)-(价值)

比如:

(2014年12月12日)-(240磅)


我不确定使用哪种结构类型。我需要保存两个不同的对象(上面描述的nsdate和nstring值),并能够按键(日期和值)遍历它们,以便在uitableview中显示每个对象的文本

NSDictionary
. 字典类似于数组,但允许您存储对象和键。字典允许您为对象指定特定的键,然后从其键检索对象。以下是直接来自苹果的描述:

NSDictionary类向管理键和值的不可变关联的对象声明编程接口。当您需要一种方便高效的方法来检索与任意键关联的数据时,请使用此类或其子类NSMutableDictionary。NSDictionary创建静态字典,NSMutableDictionary创建动态字典

格式化
例如,您可以保存权重和日期的字典(见下文),然后使用日期键检索权重对象(反之亦然)

在这里,您需要将关键点(日期)保存为对象,将对象(权重)保存为

保存和设置
如何设置NSDictionary?就这样,

// A generic NSDictionary setup
NSDictionary *dictionary = @{@"key": @"object", @"key2": @"object2"};

// An NSDictionary setup for NSDates and NSNumbers
NSDictionary *dictionary = @{[NSDate date]: [NSNumber numberWithInteger:240]};

/* There are hundreds of ways to format and use an NSDictionary.
   You could even have multiple dictionaries in an NSArray. 
   Or you could use an NSMutableDictionary and continue to add entries. */
阅读和检索
当UITableView调用其数据源来填充行时,请提供字典中的内容。您可以使用键或索引访问内容

以下是如何使用日期键检索权重条目:

NSNumber *weight = [yourDictionary objectForKey:@"keyName OR NSDate object"];

你不是在找什么吗? 例如:

注意“物品和钥匙”的顺序。这里我使用了
@“date”
@“weight”
作为键名。然后,您可以通过执行以下操作来访问对象:

myKeys[@"weight"]

如果您想有多个与日期和权重相关的条目,可以使用
NSDictionaries
NSArray


在您提供了更多上下文后更新:如果用户需要记录某些内容,那么核心数据就是最好的选择。核心数据实体的工作方式非常类似于
NSDictionary
,但它们实际上是
NSManagedObject
,包含在
NSManagedObjectContext
中。您应该创建一个具有两个属性的实体:日期和权重。

为什么不创建一个包含日期和字符串变量的类呢?这是一个好主意。我现在用这种方式设置它,但我不知道如何抓取单个对象,因为我没有任何一个键集。我只是把日期作为第一个值,把重量作为第二个值。@TerryGodier你说的“两个都没有钥匙”是什么意思?NSDictionary需要键才能正常工作——没有键就没有用。如果您需要以另一种方式访问对象,请查看文档-有更多的方式访问对象。请澄清您的评论或问题。如果这有帮助的话,请记住向上投票。我做了这件事,现在它确实起作用了——但不管我保存了多少次,它只保存了一个日期和权重对象。这是因为每次按键都是相同的吗?为了提供更多的上下文,最终目标是让用户能够记录每天的体重,然后在tableview中显示。那么,我的每种重量的钥匙都是“日期”吗?我如何用这个填充UItableview?是的,这似乎是对的,除了我有很多日期和权重(每天一个)。我明白了。这就是我强烈建议您使用核心数据的原因,否则每次关闭应用程序时,您都会丢失所有条目——这是预期会发生的事情,因为用户将日复一日地添加条目。也许下面的教程对你有帮助:这正是我需要的。非常感谢。
NSDictionary *myKeys = [[NSDictionary alloc] initWithObjectsAndKeys:
                            [NSDate date], @"date",
                            [NSNumber numberWithUnsignedInt:240], @"weight",
                            nil];
myKeys[@"weight"]
myKeys[@"date"]