如何从 NSMutableDictionary 获取对象?
How to get an object from NSMutableDictionary?
我试图从 NSMutableDictionary
、
获取一些数据
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
long time = (long)[[tempPosts allKeys] objectAtIndex:section];
return [[tempPosts objectForKey:[[NSNumber numberWithLong:time] stringValue]] count];
}
但这给了我一个<nil>
。
转换为 long
可能是一个错误。
您的密钥可能是 NSNumber*
或 NSString*
。如果要将其转换为 long
,则必须获取 longValue。
像您一样将其转换为 long
是行不通的。
使用下面的代码,它对我有用
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSLog(@"tempPosts %@",NSStringFromClass([tempPosts class]));
return [[[tempPosts objectForKey:[numberArray objectAtIndex:section]] allKeys] count];
}
numberArray 是 NSMutableArray 的值,
我也遇到了同样的问题,于是修改上面的代码,希望对你有帮助
NSDictionaries 未排序。 allKeys returns 个随机排列的键。无法保证它将 return 相同的顺序两次,因此这种方法存在固有缺陷。这一行:
long time = (long)[[tempPosts allKeys] objectAtIndex:section];
绝对是完全错误的。您正在选择字典的键之一,它是指向对象的指针,最像 NSString*。您将其转换为 long - 但是将 NSObject 的地址转换为 long 只会给您无意义的位。
我建议您描述您的实际需求。
而 NSDictionary 完全不适合您的数据模型,您现在可能已经发现了这一点。获取该字典并将其转换为包含您的应用程序所需内容的对象。
就用这个吧。它将 return 字典中的元素数。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return yourDictionary.count;
}
希望对您有所帮助。
NSMutableDictionary 中的对象使用键存储和访问。
设置 NSMutableDictionary
NSMutableDictionary * dictionary = [[NSMutableDictionary alloc]init];
存储在 NSMutableDictionary 中
例如
dictionary[@"someKey"] = @"someString";
如下访问存储的元素 NSString
NSString * string = dictionary[@"someKey"];
我试图从 NSMutableDictionary
、
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
long time = (long)[[tempPosts allKeys] objectAtIndex:section];
return [[tempPosts objectForKey:[[NSNumber numberWithLong:time] stringValue]] count];
}
但这给了我一个<nil>
。
转换为 long
可能是一个错误。
您的密钥可能是 NSNumber*
或 NSString*
。如果要将其转换为 long
,则必须获取 longValue。
像您一样将其转换为 long
是行不通的。
使用下面的代码,它对我有用
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSLog(@"tempPosts %@",NSStringFromClass([tempPosts class]));
return [[[tempPosts objectForKey:[numberArray objectAtIndex:section]] allKeys] count];
}
numberArray 是 NSMutableArray 的值,
我也遇到了同样的问题,于是修改上面的代码,希望对你有帮助
NSDictionaries 未排序。 allKeys returns 个随机排列的键。无法保证它将 return 相同的顺序两次,因此这种方法存在固有缺陷。这一行:
long time = (long)[[tempPosts allKeys] objectAtIndex:section];
绝对是完全错误的。您正在选择字典的键之一,它是指向对象的指针,最像 NSString*。您将其转换为 long - 但是将 NSObject 的地址转换为 long 只会给您无意义的位。
我建议您描述您的实际需求。
而 NSDictionary 完全不适合您的数据模型,您现在可能已经发现了这一点。获取该字典并将其转换为包含您的应用程序所需内容的对象。
就用这个吧。它将 return 字典中的元素数。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return yourDictionary.count;
}
希望对您有所帮助。
NSMutableDictionary 中的对象使用键存储和访问。
设置 NSMutableDictionary
NSMutableDictionary * dictionary = [[NSMutableDictionary alloc]init];
存储在 NSMutableDictionary 中 例如
dictionary[@"someKey"] = @"someString";
如下访问存储的元素 NSString
NSString * string = dictionary[@"someKey"];