2016-10-14 30 views
0

我有一個fullName財產在我的核心數據實體Friends,其中有值,如:如何使用姓氏對核心數據進行排序,只有全名可用?

  • 李四
  • 簡·史密斯
  • 李四

我希望能夠提取姓氏,並在Swift中按字母順序排序。

我目前只知道如何使用全名,像這樣排序:

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

感謝。

+0

有了一個SQLite後端,這是不可能的,而不只是獲取的所有記錄到一個數組,你自己對它們進行排序。你要麼必須這樣做,要麼改變你的數據模型(除非你不使用sqlite作爲後端,在這種情況下你可以使用計算屬性,但你可能使用sqlite作爲後端)。 –

+0

@RobNapier你能給一個代碼示例嗎?我目前正在嘗試'.sort(by:lastNameASC)',我正在嘗試編寫,但一些幫助將不勝感激。 – think123

+1

它總是更好地添加好友實體中的姓氏列。所以,你不必寫很多代碼。 –

回答

0

你可以做如下。

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 

注:這不是一個有效的解決方案,但你沒有任何解決方案,我不知道上面的語法,這樣照顧了相同且能做的變化,如果任何要求。

相關問題