2012-10-11 32 views
0

我有一個名爲「TruckNumber」其中有一個字符串,因爲它是唯一的財產核心數據實體。字符串通常是一個1-3位整數(作爲一個字符串),但有時可以有字母,如TMP9。該物業的名稱是「itsNotANumma」。我正在執行一個提取請求來填充選擇器,但他們沒有被排序,我不知道爲什麼。我在其他實體上使用了這種精確的技術來處理其他採樣器,並且從來沒有遇到過問題。請幫助...以下是相關代碼:NSSortDescriptor不工作

// Fetch truck numbers 
NSFetchRequest *truckNumberFetchRequest = [[NSFetchRequest alloc] init]; 

NSEntityDescription *truckEntity = [NSEntityDescription entityForName:@"TruckNumber" inManagedObjectContext:self.managedObjectContext]; 
[truckNumberFetchRequest setEntity:truckEntity]; 

// Sort Descriptor 
NSSortDescriptor *truckDescriptor = [[NSSortDescriptor alloc] initWithKey:@"itsNotANumma" ascending:YES]; 

NSArray *truckSortDescriptors = [[NSArray alloc] initWithObjects:truckDescriptor, nil]; 
[inventoryFetchRequest setSortDescriptors:truckSortDescriptors]; 
error = nil; 
NSArray *truckResults = [managedObjectContext executeFetchRequest:truckNumberFetchRequest error:&error]; 

if (error) 
    NSLog(@"Unresolved error while saving context: %@, %@", error, [error userInfo]); 

truckNumbersArray = [[NSMutableArray alloc] init]; 
for (TruckNumber *truckNumber in truckResults) 
{ 
    [truckNumbersArray addObject:truckNumber.itsNotANumma]; 
} 

這裏是車號我的數據模型: enter image description here

這些結果如下:

enter image description here

回答

2

看起來你有一個簡單的錯字:

[inventoryFetchRequest setSortDescriptors:truckSortDescriptors]; 

應該是:

[truckNumberFetchRequest setSortDescriptors:truckSortDescriptors]; 

我無論如何都會認爲,通過閱讀代碼。

+0

Grrrrrrrrrr ....謝謝。當我允許的時候,我會在9分鐘內接受答案。謝謝。 – HackyStack

+0

有時你看不到樹林。再次感謝。我會恥辱30秒鐘向你致敬:-) – HackyStack

+0

沒問題!很高興成爲發現錯字的第二雙眼睛:-)。 – mattjgalloway

0
[NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES comparator:^(id obj1, id obj2){ 
    return [(NSString*)obj1 compare:(NSString*)obj2 options:NSNumericSearch]; 
}]; 

它可以如此完美,如果你從1-5000或起一系列具有數字。