2011-12-30 153 views
1

嗨取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”的对象?

+1

NSPredicate文档 – Rog 2011-12-30 11:44:55

回答

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]; 
    
1

创建一个读取请求,并与所需EntityDescription名填充和NSPredicate对象包含条件id_player == 3,然后进行excuteFetchRequest在其上运行的管理模式这一请求。

+0

这是关于正确的,除了它是托管对象上下文,而不是模型,th在执行请求。 – Caleb 2012-06-06 18:09:56