Objective-C对象集合操作全解析
立即解锁
发布时间: 2025-08-21 01:59:20 阅读量: 2 订阅数: 9 

### Objective-C 对象集合操作全解析
在开发Objective-C应用程序时,经常会涉及到对对象集合的操作,如数组和字典。本文将详细介绍如何在Objective-C中处理对象集合,包括对象数组的创建、筛选、动态操作,数组的文件读写,以及字典的创建等内容。
#### 1. 创建Person类
首先,我们需要定义一个`Person`类,用于表示人员信息。以下是`Person.h`和`Person.m`文件的代码:
```objective-c
// Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property(strong) NSString *firstName;
@property(strong) NSString *lastName;
@property(assign) int age;
-(id)initWithFirstName:(NSString *)fName lastName:(NSString *)lName andAge:(int)a;
-(void)reportState;
@end
// Person.m
#import "Person.h"
@implementation Person
@synthesize firstName, lastName, age;
-(id)initWithFirstName:(NSString *)fName lastName:(NSString *)lName andAge:(int)a{
self = [super init];
if (self) {
self.firstName = fName;
self.lastName = lName;
self.age = a;
}
return self;
}
-(void)reportState{
NSLog(@"This person's name is %@ %@ who is %i years old", firstName, lastName, age);
}
@end
```
在上述代码中,`Person`类包含了三个属性:`firstName`、`lastName`和`age`,以及一个初始化方法`initWithFirstName:lastName:andAge:`和一个报告人员信息的方法`reportState`。
#### 2. 创建并筛选Person对象数组
接下来,我们将创建一个`Person`对象数组,并使用`NSPredicate`对数组进行筛选。以下是`main.m`文件的代码:
```objective-c
// main.m
#import <Foundation/Foundation.h>
#import "Person.h"
int main (int argc, const char * argv[]) {
@autoreleasepool {
// 实例化Person对象并添加到数组中
Person *p1 = [[Person alloc] initWithFirstName:@"Rebecca" lastName:@"Smith" andAge:33];
Person *p2 = [[Person alloc] initWithFirstName:@"Albert" lastName:@"Case" andAge:24];
Person *p3 = [[Person alloc] initWithFirstName:@"Anton" lastName:@"Belfey" andAge:45];
Person *p4 = [[Person alloc] initWithFirstName:@"Tom" lastName:@"Gun" andAge:17];
Person *p5 = [[Person alloc] initWithFirstName:@"Cindy" lastName:@"Lou" andAge:6];
Person *p6 = [[Person alloc] initWithFirstName:@"Yanno" lastName:@"Dirst" andAge:76];
NSArray *listOfObjects = [NSArray arrayWithObjects:p1, p2, p3, p4, p5, p6, nil];
// 创建NSPredicate对象进行筛选
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age > 30"];
NSArray *arraySubset = [listOfObjects filteredArrayUsingPredicate:predicate];
// 打印筛选后的数组
NSLog(@"PRINT OUT ARRAY SUBSET");
[arraySubset makeObjectsPerformSelector:@selector(reportState)];
}
return 0;
}
```
在上述代码中,我们首先创建了多个`Person`对象,并将它们添加到一个`NSArray`中。然后,使用`NSPredicate`创建了一个筛选条件,筛选出年龄大于30岁的人员。最后,打印出筛选后的数组。
操作步骤如下:
1. 打开Xcode,创建一个新的Mac应用程序项目。
2. 将上述代码复制到相应的文件中。
3. 构建并运行项目,查看控制台输出。
输出结果如下:
```
PRINT OUT ARRAY SUBSET
This person's name is Rebecca Smith who is 33 years old
This person's name is Anton Belfey who is 45 years old
This person's name is Yanno Dirst who is 76 years old
```
#### 3. 动态操作数组内容
`NSArray`是不可变的,一旦创建就不能修改其内容。如果需要动态操作数组,可以使用`NSMutableArray`。以下是一个使用`NSMutableArray`的示例:
```objective-c
// main.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
@autoreleasepool {
NSMutableArray *listOfLetters = [[NSMutableArray alloc] init];
[listOfLetters addObject:@"A"];
[listOfLetters addObject:@"B"];
[listOfLetters addObject:@"C"];
NSLog(@"OBJECTS ADDED TO ARRAY: %@", listOfLetters);
[
```
0
0
复制全文
相关推荐









