核心数据中的升序排序

时间:2018-08-09 14:33:15

标签: ios swift core-data

我想从核心数据中按升序获取对象。问题是,我希望对象为

Abc ,abc Ball, ball bat, Cat, can

但是,它发送的是

Abc,Ball,Cat ,abc, ball, cat

以下是我的代码。

class func CD_FetchAllContacts()->[RecentContact]{
    var arrResult:[RecentContact] = []
    let managedContext = PM.instance().managedObjectContext
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "RecentContact")
   fetchRequest.sortDescriptors = [NSSortDescriptor(key: "firstName", ascending: true, selector: #selector(NSString.caseInsensitiveCompare))]
    do {
        let results =
            try managedContext?.fetch(fetchRequest)
        arrResult = results as! [RecentContact]
    } catch let error as NSError {
        print("Could not fetch \(error), \(error.userInfo)")
    }
    print(arrResult.count)
     return arrResult
}

1 个答案:

答案 0 :(得分:0)

排序描述符应该像这样,(_ :)结尾:

fetchRequest.sortDescriptors = [NSSortDescriptor(key: "firstName", ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))]

编辑:实际上,即使使用您的排序描述符版本,它也可以在我完成的测试项目中运行。发布的代码似乎没有错。您是否在代码的其他部分对返回的数组进行排序?