Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 对获取的结果进行排序_Ios_Swift_Nssortdescriptor - Fatal编程技术网

Ios 对获取的结果进行排序

Ios 对获取的结果进行排序,ios,swift,nssortdescriptor,Ios,Swift,Nssortdescriptor,我正在从核心数据中提取一些对象。其中一个属性是名称标识符。 名称可以是文本或数字,因此属性为字符串类型。 我希望能够对它进行排序,使文本对象首先显示,然后按数字顺序显示数字 目前它把数字放在第一位,而数字的顺序是错误的,即300、301、3011、304、3041、布兰科、怀特 let sortDescriptor = NSSortDescriptor(key: "number", ascending: true) fetchRequest.sortDescriptors = [sortD

我正在从核心数据中提取一些对象。其中一个属性是名称标识符。 名称可以是文本或数字,因此属性为字符串类型。 我希望能够对它进行排序,使文本对象首先显示,然后按数字顺序显示数字

目前它把数字放在第一位,而数字的顺序是错误的,即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"]