我正在尝试在NSArray中放置一个值,然后再次接收它。这是我的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[_system setValue:[_objects objectAtIndex:indexPath.row] forKey:@"selected"];
NSLog(@"%@", [_objects objectAtIndex:indexPath.row]);
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSLog(@"%@", [_system valueForKey:@"selected"]);
}
以下是日志结果:
2013-11-01 23:38:04.210 ClassPoints[187:60b] test
2013-11-01 23:38:04.211 ClassPoints[187:60b] (null)
我发现奇怪的是,即使在void中创建数组也没有正确加载该值。
NSArray *testArray;
[testArray setValue:@"test" forKey:@"test"];
NSLog(@"%@", [testArray valueForKey:@"test"]);
有人可以对此有所了解吗?我完全迷失了。谢谢!
答案 0 :(得分:1)
让NSArray
成为NSMutableArray
,以便您可以在其中修改对象,并且在viewDidLoad中不要忘记初始化它。
-(void)viewDidLoad {
myMutableArray = [[NSMutableArray alloc] init];
}
答案 1 :(得分:0)
初始化NSArray后,您将无法在其上添加/删除/编辑对象。这就是NSMutableArray的用途。
答案 2 :(得分:0)
尝试使用此NSMutableArray
并设置使用setObject
api,尽管设置了setValue。
NSMutableArray *testArray = [NSMutableArray array];
[testArray setObject:@"test" forKey:@"test"];
NSLog(@"%@", [testArray objectForKey:@"test"]);
答案 3 :(得分:0)
首先,您需要使用要使用的集合类型的可变版本,然后需要分配和初始化它们。除非您的_system(NSArray?)包含符合“selected”的键值编码的对象。 setValue:forKey
在每个数组元素上调用setValue:forKey。这同样适用于valueForKey:
。这就是为什么你的孤立的例子也不会工作。我想你想要一个NSMutableDictionary
然后你可以通过键获取/设置对象,而数组只能用于索引。
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:yourObject forKey:yourKey];
id obj = [dictionary objectForKey:yourKey];