2014-08-27 82 views
0

我需要在覈心數據模型核心數據獲取最新對象值

抓取只有一個值的最新條目表結構: 時間戳,接收器,消息

條目1:2014年1月1日, 123,你好

條目2:2014年2月1日,321,你好

條目3:2014年2月1日,123,hello1

條目4; 02.02.2014,321,你好1

我只需要得到接收器123和接收器321的最新條目。 你有什麼想法或者我應該更改爲sqlite嗎?

感謝烏拉圭回合的答覆

+0

閱讀NSPredicates。 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/Reference/NSPredicate.html – Mike 2014-08-27 17:08:57

回答

0

用於指定你想從接收器123或接收器321來項,你需要使用的NSPredicate

接下來,對於最新的條目,這可能有點棘手。假設對於一個日期條目,您只能創建一個條目,但您可以依賴最後日期條目對應於最新記錄的事實。但是如果有多個條目對應一個日期的機會,那麼我建議你創建一個額外的列,稱爲序列號。原因是Core Data不會按照插入的順序獲取數據。另外,在表中保留一些不屬於數據的主鍵是一種好的做法。現在,要獲取最小/最大的條目,您必須使用NSSortDescriptor

我附上一個示例代碼。

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"myEntityName"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"receiver == %d", receiverValue]; 
[fetchRequest setPredicate:predicate]; 
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"serialNo" ascending:NO]; 
[fetchRequest setSortDescriptors:@[sortDescriptor]]; 
NSArray *results = [context executeFetchRequest:fetchRequest error:nil]; 
if ([results count] > 0) { 
    MyManagedObject *object = [results firstObject]; 
} 

希望這個答案可以幫助你。