如何使用姓氏对核心数据进行排序,只有全名可用?
Posted
技术标签:
【中文标题】如何使用姓氏对核心数据进行排序,只有全名可用?【英文标题】: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 是的,我明白了(现在)。首先有两列可能是一个更好的主意。
【参考方案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
注意:这不是一个有效的解决方案,但您没有任何解决方案,而且我不确定上述语法,因此请注意相同的内容并根据需要进行更改。
【讨论】:
以上是关于如何使用姓氏对核心数据进行排序,只有全名可用?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过在 ios 中结合个人实体的名字和姓氏来对全名应用谓词