-1

我正在使用 Tapku 的日历,我想保存一些用户输入的值。

但我有点偶然发现我将如何实现这一点,这是布局:

// allocate the arrays and dictionary
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
NSMutableArray *dateValueArray = [[NSMutableArray alloc] init];

// set array values
[dateValueArray addObject:@"first string"];
[dateValueArray addObject:@"Second string"];

// set dictionary with date as key, and array as value
[dict setObject:dateValueArray forKey:testdate];

字典 dict 将是唯一的字典,但由于该字典使用数组作为对象,我将有多个数组。

那么,假设在“dict”中注册了多个日期,不同的键必须使用不同的数组吗?对不起,我在这里有点困惑。

有什么办法可以使用 1 个数组来存储与不同字典键关联的所有字符串?

编辑 1

阐述:

整个想法是用户可以输入与日期相关联的文本。

我需要存储这些值,并且需要存储它们关联的日期。

所以我在一个数组中有多个值,与字典中的 1 个日期相关联。

请记住,我将不得不存储它,我想知道我应该如何将值分配给日期。

编辑2:

基本上我需要的数组是 AddObject ForKey

编辑 3

详细说明::

基本上我想以这种方式访问​​这些值:

[date1][note1] 
[date1][note2] 
[date2][note1] 
[date2][note2] 

日期和注释中的值的数量是可变的。

4

3 回答 3

1

如果我明白你在问什么,你想要的是 NSDictionary 的属性,allKeys它是该字典中所有键的数组。

于 2013-07-30T23:57:27.920 回答
0

现在我看到了你的编辑。你是在正确的方式。要执行您正在寻找的内容,请执行以下操作:

首先,在某个地方分配你的 dict:

// allocate the arrays and dictionary
NSMutableDictionary *dict = [NSMutableDictionary new];

现在,每次你得到一个带有新字符串的新日期时,首先检查是否有那个日期的第一个字符串。如果是,则创建一个新数组。如果没有,请将您的字符串添加到先前的数组中。

NSMutableArray *valuesForDate = dict[givenDate];

if (!valuesForDate)
{
    valuesForDate [NSMutableArray new];
    dict[givenDate] = valuesForDate
}

[valuesForDate addObject:@"first string for dateGiven"];
[valuesForDate addObject:@"Second string for dateGiven"];

现在你可以用你想要的东西来检索值:

NSString *test = dict[date1][0]; //first string associated for date1
NArray *allStringsForDate2 = dict[date2]; //array with all the strings for date2
于 2013-07-31T00:03:56.950 回答
0

您可以尝试使用 NSMapTable 而不是 NSDictionary,它更灵活但也更难使用。如果您对 NSMapTable 有疑问,您也会发现很难找到知道答案的人。但是你绝对可以创建一个 NSMapTable ,它将使用对象的指针作为键,而不是值。

于 2014-03-21T13:33:41.663 回答