2010-05-10 46 views
0

我正在使用核心數據併成功獲取結果。關於核心數據我有幾個問題 1.當我添加一條記錄時,它會在實體的末尾還是在實體的起始處添加。 2.我正在使用以下代碼來獲取數據。陣列正在填充所有記錄。但是它們與我在記錄中輸入實體的順序不同。爲什麼?基於默認排序的依據是什麼?iphone coredata提取請求排序

NSFetchRequest* allLatest = [[NSFetchRequest alloc] init]; 
[allLatest setEntity:[NSEntityDescription entityForName:@"Latest" inManagedObjectContext:[self managedObjectContext]]]; 

NSError* error = nil; 
NSArray* records = [managedObjectContext executeFetchRequest:allLatest error:&error]; 
[allLatest release]; 

3.我輸入記錄,1,2,3,4 .........一段時間後,我想刪除我進入第一個記錄的方式(我的意思最古老的數據)。像刪除最舊的兩條記錄。怎麼做?

回答

3

以任何方式保證訂購。如果你關心順序,你需要在你的實體中包含一個屬性(例如,稱之爲「sequenceNumber」),並在你的NSFetchRequest的排序描述符中使用它。

4

你有陣列上的排序是這樣的:

 
NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"SortKey" ascending:YES] autorelease]; 
NSArray *sortedList = [records sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]]; 

的initWithKey:參數是你想排序的屬性。如果您有多個要排序的鍵,則可以將它們作爲列表添加到sortedArrayUsingDescriptors:參數中。該列表將按照第一個描述符進行排序,然後按照下一個描述符對每個組進行排序。

-dan

+0

我不想排序。我想按照插入到實體的順序記錄這些記錄。 – Satyam 2010-05-11 04:03:32

+0

如果我添加一些「日期」屬性到實體,然後我可以獲取從核心日期直接排序的記錄。否則,我可以刪除只保留最近一週數據的記錄嗎? – Satyam 2010-05-11 04:31:45