我有一个NSObject
班级,它的名称是test.
classtest
具有3个属性。Name
,age
,id
,
我在测试课程中有3个对象。s
,b
,c
。
我使用以下方法将所有对象放入数组:NSArray *ary = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
我试图访问该数组中属性的数据。这意味着我必须在循环(for循环或while循环)的数组中读取,写入对象的属性。
我在互联网上找到了很多资料。我接近要做的方法是:
[[ary objectAtIndex:0] setName:@"example"];
此方法适用于设置者和获取者。但这确实带来了一个可怕的错误。有任何“工作”方法可以做到吗?
谢谢...
让我们想象一个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
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句