获取具有特定属性的NSManagedObject

时间:2011-12-30 11:42:53

标签: objective-c ios core-data nsmanagedobject

您好我有一个NSArray(playersList),其中包含以下NSManagedObjects:

(
    "<NSManagedObject: 0x6b75980> (entity: Players; id: 0x6b749d0 <x-coredata://463316AB-BCF5-4257-AE5B-26E3AAB0DAE1/Players/p1> ; data: { \"id_player\" = 2;\n    name = 7777;\n})",
    "<NSManagedObject: 0x6b759e0> (entity: Players; id: 0x6b749e0 <x-coredata://463316AB-BCF5-4257-AE5B-26E3AAB0DAE1/Players/p2> ; data: { \"id_player\" = 3;\n    name = \"hcp 5\";\n})",
    "<NSManagedObject: 0x6b756d0> (entity: Players; id: 0x6b749c0 <x-coredata://463316AB-BCF5-4257-AE5B-26E3AAB0DAE1/Players/p3> ; data: {\"id_player\" = 4;\n    name = 1;\n})"
)

如何查询它以'id_player == 3'返回对象?

2 个答案:

答案 0 :(得分:1)

创建一个获取请求,并使用所需的EntityDescription名称和一个包含条件NSPredicate的{​​{1}}对象填充它,然后让id_player == 3运行该请求反对管理模式。

答案 1 :(得分:0)

有几种方法可以做到这一点。

  • 迭代数组,只检查数组中每个对象的id_player属性

    NSIndexSet* indexes = [originalArray indexesOfObjectsPassingTest: ^(id obj, NSUInteger idx, BOOL *stop)
                          {
                              return [obj id_player] == 3;
                          }];
    
  • 使用谓词(有关详细信息,请参阅predicate programming guide

    NSPredicate* predicate = [NSPredicate predicateWithFormat: @"id_player == %d", 3];
    NSArray* results = [originalArray filteredArrayUsingPRedicate: predicate];