iOS - 在数组中查找复杂对象

Spa*_*Dog 17 iphone cocoa cocoa-touch ipad ios

我有一个来自NSObject类的对象,我称之为"品牌"并具有以下属性:

.name
.number
.site
Run Code Online (Sandbox Code Playgroud)

在给定的时间,数十个这些对象存储在NSMutableArray上,如:

object 1
object 2
object 3
object 4
...
Run Code Online (Sandbox Code Playgroud)

我希望能够通过数字从数组中检索给定的对象.不是数组上对象的索引,而是对象的number属性(例如,get对象的number属性等于10).

我知道NSArrays有很聪明的方法来检索东西,但我不知道它们,因为我很少使用它.有没有办法从数组中检索该对象,而不必遍历数组上的所有对象并检查每个对象的数字属性?

你们能帮忙吗?谢谢.

skr*_*ram 15

我会推荐NSPredicate.你可以用这样的东西来做,假设listOfItems你的数组包含你NSObject的所有属性.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"number == 10"];
NSArray *filtered = [listOfItems filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)

您的过滤结果,任何匹配的数字10现在都在filtered数组中.如果你想回到你的对象,你可以做这样的事情:

YourObject *object = (YourObject*)[filtered objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


rob*_*off 12

NSUInteger indexOfObject10 = [myArray indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop){
    MyObject *object = (MyObject *)obj;
    return [object.number == 10];
}];

MyObject *object10 = myArray[indexOfObject10];
Run Code Online (Sandbox Code Playgroud)