0

我正在尝试将一个值放入 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"]);

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

4

4 回答 4

1

做你NSArray的,NSMutableArray这样你就可以在其中编辑对象,并且在你的 viewDidLoad 中不要忘记初始化它。

-(void)viewDidLoad {
    myMutableArray = [[NSMutableArray alloc] init];
}
于 2013-11-02T06:53:09.687 回答
0

尽管设置了 setValue,但尝试像这样使用NSMutableArray和设置使用api。setObject

 NSMutableArray *testArray = [NSMutableArray array];
 [testArray setObject:@"test" forKey:@"test"];
 NSLog(@"%@", [testArray objectForKey:@"test"]);
于 2013-11-02T07:03:19.987 回答
0

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

于 2013-11-02T06:47:59.170 回答
0

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

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:yourObject forKey:yourKey];
id obj = [dictionary objectForKey:yourKey];
于 2013-11-02T08:55:46.563 回答