2017-05-10 11 views
0

코어 데이터에서 일부 개체를 가져 오는 중입니다. 속성 중 하나는 이름 식별자입니다. 이름은 텍스트 또는 숫자 일 수 있으므로 속성은 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"]