2012-11-22 111 views
0

我在我的Iphone应用程序中使用核心数据。在我的核心数据我有类似的东西;Objective-C,核心数据问题

[对象:表,数:2]

[对象:表,数:4]

[对象:窗口,编号:2]

[对象:窗口,编号: 5]

[对象:椅子,编号:2]

[对象:椅子,数:3]

我怎样才能得到一个NSArray与表的最低号码,窗口的最低号码和椅子的最低号码?谢谢。

回答

2

从苹果网站

https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html

1)直取指定你想获得

NSManagedObjectContext *moc = [self managedObjectContext]; 
NSEntityDescription *entityDescription = [NSEntityDescription 
    entityForName:@"Employee" inManagedObjectContext:moc]; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:entityDescription]; 

2)指定您正在寻找的特点酒色实体的类型,(你可以忽略这一点,因为你想所有)

// Set example predicate and sort orderings... 
NSNumber *minimumSalary = ...; 
NSPredicate *predicate = [NSPredicate predicateWithFormat: 
    @"(lastName LIKE[c] 'Worsley') AND (salary > %@)", minimumSalary]; 
[request setPredicate:predicate]; 

3)spe cify的命令

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
    initWithKey:@"firstName" ascending:YES]; 
[request setSortDescriptors:@[sortDescriptor]]; 

NSError *error; 
NSArray *array = [moc executeFetchRequest:request error:&error]; 
if (array == nil) 
{ 
    // Deal with error... 
} 

4)你得到一个排序的数组,所以...得到最后或第一个条目,取决于你选择的顺序。

+0

对不起,我问我的问题不好。我编辑它。 – tchike

+1

如果表,窗口和椅子是不同的实体,那么你可以按照上述相同的方式为它们提取,如果它们是相同的实体,你可以使用谓词来获取3次,以搜索类似于@“type = chair”的东西其余的答案是相同的,或者你可以像上面和数组内部一样对它进行排序,以便在数组中找到一个简单的for循环,当你找到3中的第一个时,搜索3中的任何一个,一个,然后你继续通过数组,直到你得到这种类型的其他2个第一个对象。 – Pochi

+0

他们在同一个实体中。我会这样做,谢谢。 – tchike