2017-05-10 6 views
0

コアデータからいくつかのオブジェクトをフェッチしています。プロパティの1つは名前識別子です。 名前はテキストまたは数字のどちらでもかまいません。したがって、プロパティはString型です。 私は、テキストオブジェクトを最初に並べ替え、次に番号順に並べ替えることができるようにしたいと考えています。フェッチされた結果のソート

現在のところ、最初に番号を付けると、番号が間違った順序になります。 300、301、3011、304、3041、ブラン、ホワイト

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

答えて

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) 
    } 
} 
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"]