我有一个 NSObject
类,它的名字是 test.
test
类有 3 个属性。 姓名
, 年龄
, id
;
我在测试课上有 3 个对象。 s
, b
, c
.
我将所有对象放入数组:NSArray *ary = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
我正在尝试访问该数组中的属性数据。这意味着我必须在循环(for 循环或 while 循环)中读取、写入数组中对象的属性。
我在网上找了很多资料。我接近做的方法是:
[[ary objectAtIndex:0] setName:@"example"];
此方法适用于 setter 和 getter。但它确实给出了一个可怕的错误。有什么“可行”的方法吗?
谢谢...
最佳答案
让我们想象一个 Person
类:
@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic) NSInteger age;
@property (nonatomic) long long identifier;
+ (instancetype)personWithName:(NSString *)name age:(NSInteger)age identifier:(long long)identifier;
@end
@implementation Person
+ (instancetype)personWithName:(NSString *)name age:(NSInteger)age identifier:(long long)identifier {
Person *person = [[self alloc] init];
person.name = name;
person.age = age;
person.identifier = identifier;
return person;
}
@end
然后你可以像这样创建一组人:
NSArray *people = @[[Person personWithName:@"Rob" age:32 identifier:2452323],
[Person personWithName:@"Rachel" age:29 identifier:84583435],
[Person personWithName:@"Charlie" age:4 identifier:389433]];
然后您可以像这样提取一组人名:
NSArray *names = [people valueForKey:@"name"];
NSLog(@"%@", names);
这将产生:
2013-09-27 14:57:13.791 MyApp[33198:a0b] (
Rob,
Rachel,
Charlie
)
如果你想提取关于第二个Person
的信息,那就是:
Person *person = people[1];
NSString *name = person.name;
NSInteger age = person.age;
long long identifier = person.identifier;
如果你想改变第三人称的年龄,那就是:
Person *person = people[2];
person.age = 5;
或者,如果您想遍历数组以提取信息,您也可以这样做:
for (Person *person in people) {
NSString *name = person.name;
NSInteger age = person.age;
long long identifier = person.identifier;
// now do whatever you want with name, age, and identifier
}
关于iphone - 数组对象的属性(Objective-c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19057544/