2012-01-03 97 views
0

我已經從核心數據中提取了一些記錄,並將其呈現在表格視圖中。所有這些記錄都有11個屬性。現在在我的tableview演示文稿中,在標題上,我爲所有這些屬性添加了一個按鈕。點擊按鈕後,我想根據該屬性對記錄進行排序。 我嘗試使用排序描述符,但它不起作用。 我的代碼是這樣的: -排序NSManaged對象數組

- (IBAction)sortButton:(id)sender { 
// tags are from 100 to 111 
UIButton *sortButton = (UIButton*)sender; 
NSString *sortDescriptorKey = nil; 
// create sort descriptor key according to the tag value 
if (sortButton.tag == 100) sortDescriptorKey = [NSString stringWithString:@"reportID "]; 
.... 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortDescriptorKey ascending:YES]; 
[self.recordArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
[sortDescriptor release]; 
[self.tableView reloadData]; 
} 

但是,此代碼不會改變任何順序可言。 我是否缺少任何東西,還是有另一種方式去做。

回答

1

問題就出在這條語句

[self.recordArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 

這將返回的recordArray排序的副本,但你不使用它。您應該將其重新分配到recordArray,以便tableView在重新加載時正確更新。更改爲:

self.recordArray=[self.recordArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
+0

謝謝,多麼愚蠢的錯誤:) – cocoaNoob 2012-01-03 10:04:07