0

我目前正在尝试学习Objective-C,但偶然发现了一个小问题。我想构建一个 iPad 应用程序,用于按日期和时间收集用户输入的简单数字。为此,我想到了这个结构:

  • 字典(“主要”)
    • Dictionary("27012013") //这包含 2013 年 1 月 27 日的所有数据
      • 索引 = 0
      • 3:33 pm = 123 //这意味着在 3:33 pm 有一个值 123
      • ..其他要遵循的价值观
    • 字典(“28012013”​​)//等等

所以基本上有一个名为“main”的大字典,它保存所有日子的字典,然后保存它们的索引和所有记录的值。

我通过 UIAlertView 输入获取值,然后调用

(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

委托方法,然后将当前时间和日期保存在 NSString 中,如下所示:

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateStyle:NSDateFormatterNoStyle];
[format setTimeStyle:NSDateFormatterShortStyle];
NSString *time = [format stringFromDate:[NSDate date]];
NSLog(@"Time: %@ and entered Text:%@",time,returnvalue.text);
 //Which Date do we have
[format setDateStyle:NSDateFormatterShortStyle];
[format setTimeStyle:NSDateFormatterNoStyle];
NSString *date = [format stringFromDate:NSDate.date];
NSLog(@"Found Date:%@",date);
NSString *identifier = 
  [[date componentsSeparatedByCharactersInSet:
                 [NSCharacterSet punctuationCharacterSet]] componentsJoinedByString:@""];
NSLog(@"Identifier:%@",identifier);

其中 returnvalue.text 保存输入的文本。然后,我检查是否已经存在像 NSString 标识符那样调用的字典,如果不存在,则将其添加到 main:

        if([main objectForKey:identifier] == nil){
        //No Dict Available for current Date so create one:
        //there should be no more than 30 Entries per Day
        NSMutableDictionary *d = [[NSMutableDictionary alloc] initWithCapacity:30];
        [d setObject:identifier forKey:@"Name"];
        NSNumber* tmpi = [NSNumber numberWithInteger:main.count];
        [d setObject:tmpi forKey:@"Index"];
        //and store the recieved value in it
        [d setObject:returnvalue.text forKey:time];
        [main setObject:d forKey:identifier];
    }
    else{
        NSMutableDictionary *d = [main objectForKey:identifier];
        [d setObject:returnvalue.text forKey:time]; 
    }

这里的第一个问题是:我必须使用 main.count 还是 main.count+1?

此外,我想在 tableView 中显示他们的信息,其中每天都应该有自己的部分。对于方法

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

因此,我需要通过索引来处理主字典中的字典,或者例如通过它们的索引键过滤它们以返回它们内部的值的数量。我现在可以使用一个巨大的 NSArray 作为 main ,但这会使确定当天的字典是否已经存在的方法更加复杂,并且不想这样做。那么有人可以帮助我吗?

提前致谢

4

1 回答 1

0

第一个答案:这取决于您,但“main.count”将返回字典中的对象数可能为零。因此,如果您想从零开始,那么最好+1。

第二个答案:这是 NSDictionary "allKeys" 的函数,它将所有键作为 "NSArray" 返回,然后如果您不知道“键”,则可以通过索引获取每个键,只需使用数组中的索引即可。

于 2013-05-06T14:05:46.833 回答