获取valueForKey返回(null)

问题描述:

我想将一个值放入一个NSArray并稍后再次接收它。这里是我的代码:获取valueForKey返回(null)

- (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) 

我感到奇怪的是,即使在创建虚空阵列未正确加载值。

NSArray *testArray; 
[testArray setValue:@"test" forKey:@"test"]; 
NSLog(@"%@", [testArray valueForKey:@"test"]); 

任何人都可以对此有所了解吗?我完全失去了。谢谢!

+0

你解决了你的问题吗?请标记正确的答案,将此帖标记为已回答。 –

一旦NSArray初始化完成,您将无法在其上添加/删除/编辑对象。这是一个NSMutableArray的用途。

+0

'NSMutableArray * testArray; [testArray setValue:@“test”forKey:@“test”]; NSLog(@“%@”,[testArray valueForKey:@“test”]);'仍然返回(null) – user2946945

使您的NSArrayNSMutableArray,因此您可以编辑其中的对象和viewDidLoad,不要忘记初始化它。

-(void)viewDidLoad { 
    myMutableArray = [[NSMutableArray alloc] init]; 
} 
+0

还没有。这真的很奇怪,因为我知道我以前用过很多次,没有问题。有一些超小的东西我错过了。 – user2946945

尝试像这样使用NSMutableArray和设置设定的setValue的使用setObject API inspite。

NSMutableArray *testArray = [NSMutableArray array]; 
[testArray setObject:@"test" forKey:@"test"]; 
NSLog(@"%@", [testArray objectForKey:@"test"]); 
+0

没有可见的setObject和objectForKey接口 – user2946945

+0

我没有得到,而且这个接口只适用于mutablearray –

首先,您需要使用要使用的集合类型的可变版本,然后您需要分配并初始化它们。那么除非你的_system(NSArray?)包含的对象是符合“selected”的关键值编码。 setValue:forKey在每个数组元素上调用setValue:forKey。这同样适用于valueForKey:。这就是为什么你孤立的例子不会工作。我想你想要一个NSMutableDictionary然后你可以通过键获取/设置对象,而数组只能与索引一起工作。

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; 
[dictionary setObject:yourObject forKey:yourKey]; 
id obj = [dictionary objectForKey:yourKey];