먼저 Plans
클래스가 구현을 Comparable
및 Equatable
되어 있는지 확인 :
self.price(array,sortKey:"price") //array contains array of Plans objects
충돌 : 배열 여러 객체를 포함하는 경우, 그것은
class Plans:NSObject{
var price:Int
var name:String?
..
..
..
}
func price(array:NSMutableArray,sortKey:NSString)->Int{
var sortDescriptor:NSSortDescriptor = NSSortDescriptor(key: sortKey, ascending: true)
var sortedArray:NSArray = array.sortedArrayUsingDescriptors([sortDescriptor])//Crashes
var apt:Plans = sortedArray.objectAtIndex(0) as Plans
return apt.price
}
함수 호출을 추락했다.
func ==(lhs: Plans, rhs: Plans) -> Bool {
return lhs.price == rhs.price
}
func <(lhs: Plans, rhs: Plans) -> Bool {
return lhs.price < rhs.price
}
지금 당신은 당신의 배열을 정렬 표준 연산자를 사용할 수 있습니다 :
이
extension Plans: Comparable {}
extension Plans: Equatable {}
그런 다음 두 가지 기능을 구현하는 방법은 다음과 같습니다이다. 방법은 다음과 같습니다
let sortedArray = (objcArray as AnyObject as [Plans]).sorted(<)
입니다 아니면 구현하지 않으려면이 단순히 같은 배열을 정렬 할 수 있습니다 프로토콜 :
let sortedArray = (objcArray as AnyObject as [Plans]).sorted {$0.price < $1.price}
코드가 실제로 작동합니다. 사용중인 xcode의 버전은 무엇입니까? 어떻게'array' 변수를 초기화 했습니까? –
Xcode 6.1을 사용하고 있습니다. json 응답을 배열로 매핑하고 배열을 가격순으로 정렬하려고했습니다. –
배열에'Plans' 유형의 객체가 포함되지 않은 것 같습니다. json 응답을 배열로 변환하는 데 사용한 코드를 표시해야합니다. –