对获取的结果进行排序

时间:2017-05-10 17:14:11

标签: ios swift nssortdescriptor

我从核心数据中获取一些对象。其中一个属性是名称标识符。 名称可以是文本或数字,因此属性是String类型。 我希望能够做的是对文本对象进行排序,然后按数字顺序排列数字。

目前它将数字放在首位,数字的顺序错误,即。 300,301,3011,304,3041,Blanc,White

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

2 个答案:

答案 0 :(得分:0)

尝试这个:

var a: [Int] = []
var b: [String] = []
if let value = self[key] as? String {
    if let valueAsInt = Int(value) {
         a.append(valueAsInt)
    } else {
         b.append(value)
    }
}

答案 1 :(得分:0)

朴素版:

let fetchedResults = ["300", "301", "3011", "304", "3041", "Blanc", "White"]

var words = [String]()
var numbers = [String]()

for value in fetchedResults {
    if let number = Int(value) {
        numbers.append(value)
    } else {
        words.append(value)
    }
}

let result = words + numbers
print(result)

打印:

["Blanc", "White", "300", "301", "3011", "304", "3041"]