我有一个具有personName,lastName和age属性的普通人对象。我将用户输入存储到NSMutableArray中,我想在数组中按他/她的名字查找under。我曾尝试找到许多不同的解决方案,但都没有真正起作用。
这是我的main.m
@autoreleasepool {
char answer;
char locatePerson[40];
//Create mutable array to add users for retrieval later
NSMutableArray *people = [[NSMutableArray alloc] init];
do{
Person *newPerson = [[Person alloc]init];
[newPerson enterInfo];
[newPerson printInfo];
[people addObject:newPerson];
NSLog(@"Would you like to enter another name?");
scanf("\n%c", &answer);
}while (answer == 'y');
NSLog(@"Are you looking for a specific person?");
scanf("%c", locatePerson);
//This is where I need help
int idx = [people indexOfObject:]
}
这是非常基础的,但是我对Objective-C还是陌生的,我想尝试通过名称查找用户。我见过的解决方案已经使用了该indexesOfObjectsPassingTest
方法。但是我想知道是否可以仅使用indexOfObject
我在那里找到人的名字的方法?
任何帮助表示赞赏。
这是一些前期设计应避免的难题之一。如果您知道要将内容放入集合类中,并且需要根据某些属性(而不是按插入顺序)再次将其取出,则字典是最有效的集合类。
您可以使用以Person的name属性作为键的NSDictionary。您仍然可以遍历所有对象,但是可以避免搜索整个集合。在NSArray中找到匹配的属性可能会花费惊人的时间!您甚至不必更改您的Person对象,只需执行
NSDictionary *peopleDictionary = @{ person1.name : person1, person2.name : person2 };
或在将它们创建到NSMutableArray中时将它们一个接一个地添加。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句