簡體   English   中英

iOS /核心數據-從NSSet關系返回數組的最佳方法?

[英]iOS / Core Data - Best way to return an array from a NSSet relationship?

我正在創建一個應用程序,並使用核心數據存儲數據。 它工作正常,但我想知道從集合中返回排序數組的最佳方法是什么?

例如,我有一個實體A(按鈕),其中包含實體B(圖像)的列表。 眾所周知,核心數據正在使用NSSet存儲多對多關系。 但是我想跟蹤初始順序,因此為此添加了一個屬性“ order”。 問題在於,在我的代碼中,我需要對圖像列表進行排序,因此在類別文件(Button + Create)中,我創建了一個類似於以下方法:

- (NSArray*)imagesArray
{
    return [self.images sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDeacriptorWithKey:@"order" ascending:YES]]];
}

但是我不認為這是最好的方法,因為如果需要從我的代碼中的多個區域(不同的類)訪問此列表,則需要對集合x進行排序...是否可以添加數組(屬性)在我的類別中,以便排序一次,然后僅檢索該屬性?

您對此有何看法?

謝謝

您可以將屬性添加到類別: http : //developer.apple.com/library/ios/#documentation/cocoa/Conceptual/ObjectiveC/Chapters/ocAssociativeReferences.html

這是另一個示例:

如何通過類別擴展將屬性添加到NSMutableArray?

請注意,您將負責觀察對初始coredata NSSet屬性的更改(例如,通過KVO)。
因此,如果發生更改,您必須正確地“重新計算”您的財產...
如果您的目標是iOS 5.0或更高版本,我建議您使用有序集,但由於事實並非如此,我可以想象使用上面鏈接中描述的方式

我認為您使用訂單屬性的方法是正確的。 我寧願在模型中創建一個-(NSArray *)sortedItems之類的方法,該方法將具有帶有適當排序描述符的NSFetchRequest。 如果需要,可以緩存結果-將此數組保存在內存中。 您的NSManagedObject還可以具有未存儲在數據庫中的屬性,僅存儲在內存中。 但是考慮到Core Data的速度和性能,我真的沒有必要這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM