2013-03-27 70 views
1

我想我從蘋果服務器收到發送產品編號列表後SKProduct的數組排序SKProduct陣列。如何按價格排序值

我想只用排序如下:

NSSortDescriptor *lowestPriceToHighest = [NSSortDescriptor sortDescriptorWithKey:@"self.price" ascending:YES]; 
NSArray *sortedProducts = [products sortedArrayUsingDescriptors:[NSArray arrayWithObject:lowestPriceToHighest]]; 

,但我得到了錯誤信息:Unable to access variable "lowestPriceToHighest" 被錯誤定義我的排序描述符?

回答

0

嘗試:

NSArray *products = [response.products sortedArrayUsingComparator:^(id a, id b) { 
     NSDecimalNumber *first = [(SKProduct*)a price]; 
     NSDecimalNumber *second = [(SKProduct*)b price]; 
     return [first compare:second]; 
    }]; 

從這樣的回答:

how to sort products by price In App Purchases?

6

嘗試刪除 「自我」

NSSortDescriptor *lowestPriceToHighest = [NSSortDescriptor sortDescriptorWithKey:@"price" ascending:YES]; 
    NSArray *sortedProducts = [products sortedArrayUsingDescriptors:[NSArray arrayWithObject:lowestPriceToHighest]]; 
+0

應該是選擇的答案,謝謝! – tcd 2014-02-04 02:06:47

0
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"_strPrice" 
               ascending:sortFlag selector:@selector(localizedStandardCompare:)] ; 

嘗試用這個選擇

4

假設你有var products: [SKProduct]你可以這樣做:

products.sortInPlace { 
    return Float($0.price) < Float($1.price) 
} 
0

斯威夫特4:

products.sort(by: { (p0, p1) -> Bool in 
    return p0.price.floatValue < p1.price.floatValue 
})