我试图从NSMutableDictionary
,
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
long time = (long)[[tempPosts allKeys] objectAtIndex:section];
return [[tempPosts objectForKey:[[NSNumber numberWithLong:time] stringValue]] count];
}
答案 0 :(得分:2)
NSDictionaries未排序。 allKeys以随机顺序返回密钥。无法保证两次返回相同的订单,因此这种方法本质上存在缺陷。这一行:
long time = (long)[[tempPosts allKeys] objectAtIndex:section];
绝对是完全错误的。您正在选择字典中的一个键,它是指向对象的指针,最像是NSString *。你把它转换为long - 但是将NSObject的地址转换为long只会给你带来无意义的位。
我建议你描述一下你真正想要的东西。
NSDictionary完全不适合您的数据模型,因为您现在可能已经想到了。获取该字典并将其转换为包含应用程序所需内容的对象。
答案 1 :(得分:0)
转换为long
可能是一个错误。
您的密钥可能是NSNumber*
或NSString*
。如果要将其转换为long
,则必须获取longValue。
像你一样把它投射到long
,不会工作。
答案 2 :(得分:0)
使用以下代码,它适用于我
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSLog(@"tempPosts %@",NSStringFromClass([tempPosts class]));
return [[[tempPosts objectForKey:[numberArray objectAtIndex:section]] allKeys] count];
}
numberArray是NSMutableArray Value,
我也有同样的问题,然后更改上面的代码,希望它有用
答案 3 :(得分:0)
只需使用它。它将返回字典中元素的数量。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return yourDictionary.count;
}
希望它会对你有所帮助。
答案 4 :(得分:0)
使用密钥存储和访问NSMutableDictionary中的对象。
设置NSMutableDictionary
NSMutableDictionary * dictionary = [[NSMutableDictionary alloc]init];
存储在NSMutableDictionary中 e.g。
dictionary[@"someKey"] = @"someString";
按如下方式访问存储的元素NSString
NSString * string = dictionary[@"someKey"];