我目前正在尝试学习Objective-C,但偶然发现了一个小问题。我想构建一个 iPad 应用程序,用于按日期和时间收集用户输入的简单数字。为此,我想到了这个结构:
- 字典(“主要”)
- Dictionary("27012013") //这包含 2013 年 1 月 27 日的所有数据
- 索引 = 0
- 3:33 pm = 123 //这意味着在 3:33 pm 有一个值 123
- ..其他要遵循的价值观
- 字典(“28012013”)//等等
- Dictionary("27012013") //这包含 2013 年 1 月 27 日的所有数据
所以基本上有一个名为“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 ,但这会使确定当天的字典是否已经存在的方法更加复杂,并且不想这样做。那么有人可以帮助我吗?
提前致谢