2011-09-25 41 views
3

我在實體上有一個字符串字段。每次我想要檢索條目排序列表和條目包含數字,名單就這樣產生了:iPhone - 對核心數據排序「10,20,30」的正確順序

car 1 
car 10 
car 11 
car 2 
car 21 
etc. 

,而不是

car 1 
car 2 
car 10 
car 11 
car 21 

如何強制要求,以數字正確排序在一個字符串屬性?

我使用這個:

NSSortDescriptor *sortByItem = [NSSortDescriptor sortDescriptorWithKey:key ascending:YES selector:@selector(compare:)]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByItem]; 
[request setSortDescriptors:sortDescriptors]; 

感謝。

+0

我認爲你必須編寫你自己的排序方法。我不知道有關此的任何默認排序方法。 – tamasgal

+0

它正確地對數字進行排序,但它將它們排序在它們的序數值而不是它們的數值上。你可以將值作爲整數加載到一個NSMutableArray然後排序? –

+0

你可以在你的排序方法中將1更改爲01嗎?那會做。像@「%02i」? – user387184

回答

2

自己寫的比較方法,看起來像這樣:

- (NSComparisonResult)numericCompare:(NSString *)aString 
{ 
    return [self compare:aString options:NSNumericSearch]; 
} 

,則此方法的選擇傳遞給sort描述。

+0

就是這樣。謝謝!!!!! – SpaceDog

1

我找到了一個更簡單的方法。只需使用localizedStandardCompare:而不是比較:它會正確排序字符串上的數字。