【问题标题】:How to sort Core Data using the last name, with only a full name available?如何使用姓氏对核心数据进行排序,只有全名可用?
【发布时间】:2016-10-14 01:46:40
【问题描述】:

我的核心数据实体Friends 中有一个fullName 属性,其值如下:

  • 约翰·多伊
  • 简·史密斯
  • 乔博客

我希望能够在 Swift 中提取姓氏,并按字母顺序进行排序。

我目前只知道如何使用全名进行排序,如下所示:

let sortDescriptor = NSSortDescriptor(key: "fullName", ascending: true)
request.sortDescriptors = [sortDescriptor]

谢谢。

【问题讨论】:

  • 使用 sqlite 后端,如果不将所有记录提取到数组中并自己进行排序,这是不可能的。您要么必须这样做,要么更改您的数据模型(除非您不使用 sqlite 作为后端,在这种情况下您可以使用计算属性,但您可能使用 sqlite 作为后端)。
  • @RobNapier 你能举个代码例子吗?我目前正在尝试.sort(by: lastNameASC),我正在尝试将其写下来,但我们将不胜感激。
  • 在 Friends 实体中添加 lastName 列总是更好。因此,您不必编写大量代码。
  • 你在一个名字和姓氏总是在一个词中的完美世界中玩耍?
  • @FredericP 是的,我明白了(现在)。首先有两列可能是一个更好的主意。

标签: ios swift sorting core-data swift2


【解决方案1】:

您可以按照以下方式进行操作。

1) 从核心数据中获取所有记录。 (假设你得到了aryFullname)

2) 使用 for 循环,您可以只获取数组的姓氏,如下所示。

//Define new mutable array aryfinalData
         for i in 0..<aryFullname.count
                {
                  var fullName = aryFullname.ObjectAtindex(i)
                  var fullNameArr = split(fullName) {$0 == " "}
                  var lastName: String? = fullNameArr.count > 1 ? fullNameArr[1] : nil
                  aryfinalData.addObject(lastName)
                 }

3) 数组排序如下。

 //  convert NSMutableArray to the Array by using below line of code. 
    let arySort = aryfinalData as AnyObject as! [String]
    var sortedArray = arySort.sort { $0.name < $1.name }
 //  sortedArray is your Final array

注意:这不是一个有效的解决方案,但您没有任何解决方案,而且我不确定上述语法,因此请注意相同的内容并根据需要进行更改。

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 2015-05-25
    相关资源
    最近更新 更多