Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何将setValue:forKey:function与NSArray一起使用_Iphone_Objective C - Fatal编程技术网

Iphone 如何将setValue:forKey:function与NSArray一起使用

Iphone 如何将setValue:forKey:function与NSArray一起使用,iphone,objective-c,Iphone,Objective C,我尝试使用函数-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 valueForK

我尝试使用函数
-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数组不等于我设置的数组(array)


你能告诉我我遇到了什么问题吗。使用这些函数的方法是什么?

在创建
NSArray
后,不能将对象添加到该数组中。为此,必须使用
NSMutableArray

在创建
NSArray
后,无法将对象添加到该阵列中。为此,必须使用
NSMutableArray

NSArray
setValue:forKey:
方法用于,而不是将数组用作关联容器。您需要使用
NSMutableDictionary

NSMutableDictionary *rootDict = [NSMutableDictionary dictionary];
NSArray *array = [[NSArray alloc] initWithObjects:@"name", @"address", @"title", nil];
[rootDict setValue:array forKey:@"n"];
NSArray *getArr = [rootDict valueForKey:@"n"];

NSArray
setValue:forKey:
方法用于,而不是将数组用作关联容器。您需要使用
NSMutableDictionary

NSMutableDictionary *rootDict = [NSMutableDictionary dictionary];
NSArray *array = [[NSArray alloc] initWithObjects:@"name", @"address", @"title", nil];
[rootDict setValue:array forKey:@"n"];
NSArray *getArr = [rootDict valueForKey:@"n"];

数组不是键值存储,您似乎希望将其用作键值存储。我认为您需要一个NSDictionary(或者更准确地说,如果您希望在创建后对其进行修改,则需要NSMutableDictionary)。

数组不是键值存储,您似乎希望将其用作。我认为您需要一个NSDictionary(或者更准确地说,如果您希望在创建NSMutableDictionary后对其进行修改,则需要NSMutableDictionary)。

根据
设置值: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:forundinedkey:
到包含的对象中,该对象根据
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:
,该对象不符合指定的键

,而使用NSMutableDictionary进行键值编码是一个步骤,NSArray确实有一个
setValue:forKey:
方法。但是它做了一些不同的事情@你说得对,我完全忘记了键值编码!谢谢虽然NSMutableDictionary可以用于键值编码,但NSArray确实有一个
setValue:forKey:
方法。但是它做了一些不同的事情@你说得对,我完全忘记了键值编码!谢谢这应该是评论而不是回答。这应该是评论而不是回答。