获取已排序记录的问题(CoreData)

时间:2014-12-31 09:02:18

标签: ios core-data swift nsmanagedobject nsmanagedobjectcontext

我有

两个实体记录和分组。

一对多的关系,所以每组可以有多个记录。

in group - > (relationship:arrRecord, Destination:record, Inverse:recordGroup)

记录中的

- > (relationship:recordGroup, Destination:group, Inverse:arrRecord)

我可以获取群组和相应的记录。但我无法获取按记录字段“名称”排序的组和相应记录。

代码:

let fetch: NSFetchRequest  = NSFetchRequest(entityName: "group")
if let fetchGroups = APP_DELEGATE.managedObjectContext!.executeFetchRequest(fetch, error: nil) as? [group]
{
 for group in fetchGroups
  {

    let sortDesc = NSSortDescriptor(key: "name", ascending: true)
    let arrSorted = group.arrRecord.sortedArrayUsingDescriptors([sortDesc])
    print("arrSorted === \(arrSorted)") // sorted by name

    group.arrRecord = NSSet(array: arrSorted)
    print("NSSet(array: group.arrRecord) === \(group.arrRecord)") //not sorted by name

 } 
}

正在对arrSorted进行排序,但在转换回NSSet时,顺序重置:(

1 个答案:

答案 0 :(得分:1)

对许多人来说'关系会生成NSSet(或NSOrderedSet,如果您已选中' ordered'),这不是已排序的集合。

您可以使用- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors获取已排序的NSArray