我尝试使用-setValue:forKey:
函数并使用-valueForKey:
获取值
示例:
NSArray *rootarr = [[NSArray alloc] init];
NSArray *array = [[NSArray alloc] initWithObjects:@"name", @"address", @"title", nil];
[rootarr setValue:array forKey:@"n"];
NSArray *getArr = [rootarr valueForKey:@"n"];
但是我得到的getArr数组与我设置的数组(数组)不相等。
你可以告诉我,我遇到了什么问题。什么是使用这些功能的方式?答案 0 :(得分:5)
NSArray
' setValue:forKey:
方法用于Key Value Coding,而不是将数组用作关联容器。您需要使用NSMutableDictionary
。
NSMutableDictionary *rootDict = [NSMutableDictionary dictionary];
NSArray *array = [[NSArray alloc] initWithObjects:@"name", @"address", @"title", nil];
[rootDict setValue:array forKey:@"n"];
NSArray *getArr = [rootDict valueForKey:@"n"];
答案 1 :(得分:0)
数组不是键值存储,您似乎希望将其用作键值存储。我想你想要一个NSDictionary(或者更确切地说是NSMutableDictionary,如果你想在它创建后修改它)。
答案 2 :(得分:0)
根据Apple documentation setValue:forKey:
使用指定的值和键在数组的每个项目上调用setValue:forKey:。
实际用途是当您要为数组的每个元素设置相同的值
UILabel *label1 = [[UILabel alloc]init];
UILabel *label2 = [[UILabel alloc]init];
NSArray *arr = @[label1, label2];
[arr setValue:@"bye" forKey:@"text"];
NSLog(@"%@ %@",label1.text, label2.text); // bye bye
在您的示例中,“ getArr”是一个空数组,因为您的“ rootarr”没有元素,否则您将收到setValue:forUndefinedKey:
到包含的对象中,这些对象与分配的键不兼容
答案 3 :(得分:-1)
创建后,您无法将对象添加到NSArray
。您必须使用NSMutableArray
才能执行此操作。