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:
方法。但是它做了一些不同的事情@你说得对,我完全忘记了键值编码!谢谢这应该是评论而不是回答。这应该是评论而不是回答。