对获取的结果进行排序
Sorting fetched results
我正在从核心数据中获取一些对象。其中一个属性是名称标识符。
名称可以是文本或数字,因此 属性 是 String 类型。
我想要做的是对其进行排序,以便首先是文本对象,然后是数字顺序的数字。
目前是把数字放在第一位,数字的顺序是错误的,即。 300、301、3011、304、3041、白色、白色
let sortDescriptor = NSSortDescriptor(key: "number", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
也许试试这个:
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)
}
}
原始版本:
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"]
我正在从核心数据中获取一些对象。其中一个属性是名称标识符。 名称可以是文本或数字,因此 属性 是 String 类型。 我想要做的是对其进行排序,以便首先是文本对象,然后是数字顺序的数字。
目前是把数字放在第一位,数字的顺序是错误的,即。 300、301、3011、304、3041、白色、白色
let sortDescriptor = NSSortDescriptor(key: "number", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
也许试试这个:
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)
}
}
原始版本:
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"]