2012-10-18 30 views
1

我已經使用CoreData將數據保存到數據庫中。我需要按照保存的順序從我的表中獲取數據。在桌子內部,按Z_PK - 隱藏的CoreData鍵進行排序。我如何創建這樣的排序描述符。如果我使用沒有排序描述符的提取請求,我的數據對象的順序錯誤。iOS從CoreData中獲取按主鍵排序的對象

+0

你爲什麼不希望使用一種描述與您的讀取請求? – RunLoop

+0

這是敏感數據。任何種類的描述符更改順序:( – selfsx

+2

看到這個問題: http://stackoverflow.com/questions/10153335/iphone-core-data-fetch-primary-key – iMemon

回答

6

核心數據框架未公開的任何內容都是實現細節。 Z_PK存在並且目前適合您的目的的事實不能被依賴。

如果創建/保存順序對您的模型很重要,那麼它應該包含在您的模型中。除此之外沒有其他的東西。

4

在覈心數據框架中沒有合適的方法來按主鍵排序對象,但我認爲我們可以使用objectID作爲主鍵並按objectID排序。對象ID特定對象總是會增加。因此,你可以使用下面的方法

/*! 
@param <NSManagedObject> array 
@return <NSManagedObject> sortedarray 
*/ 

+ (NSArray *) sortManagedObjectArrayByObjectID:(NSArray *) array { 

    NSArray *compareResult = [array sortedArrayUsingComparator:^NSComparisonResult(NSManagedObject *obj1, NSManagedObject *obj2) { 

     NSString *s = [obj1.objectID.URIRepresentation lastPathComponent]; 
     NSString *r = [obj2.objectID.URIRepresentation lastPathComponent]; 
     return [s compare:r]; 

    }]; 

    return compareResult; 

} 

希望這將有助於