使用NSPredicate过滤对象中的数组

时间:2014-03-20 19:16:44

标签: ios objective-c nsarray nspredicate

我需要通过属性从另一个数组内的对象中过滤数组。 让我们说我有两个类,如:

StoreList.h

@interface StoreList : NSObject {
  NSMutableArray *storesArray; //Array containing Store objects
}

Store.h

@interface Store : NSObject {
  NSString *name;
}

所以,我有一个NSArray(storeListArray),里面有一些StoreList对象。然后,我的数组是这样的:

storeListArray = [
 StoreList:{
    storesArray: {
                  stores[{
                    store: {
                     name: "Store1"
                    },
                    store: {
                     name: "Store2"
                    }
                  }]
                },
    storesArray: {
                  stores[{
                    store: {
                     name: "Store1"
                    },
                    store: {
                     name: "Store2"
                    }
                  }]
                }
   }
];

好吧,我的问题是:如何通过" name"过滤storeListArray?商店对象的属性,使用NSPredicate?

我试图做这样的事情,但这不起作用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY storeList CONTAINS[cd] %@", filterString];
self.filteredStores = [storeListArray filteredArrayUsingPredicate:predicate];
return self.filteredStores;

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

试试这个,

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"ANY SELF.storesArray.name == %@", filterString];

NSArray * videoArray = [storeListArray filteredArrayUsingPredicate:predicate];

答案 1 :(得分:0)

你试过如下,

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"name == %@", filterString];

NSArray * videoArray = [storeListArray filteredArrayUsingPredicate:predicate];

谢谢!