2012-09-27 47 views
1

tAfter創建主從應用程序項目,我更換了下面的代碼行,在MasterViewController.m,iPhone模擬器6.0崩潰,並自定義排序描述符

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO]; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
      initWithKey:@"timeStamp" 
       ascending:YES 
      comparator:^NSComparisonResult (id obj1, id obj2) 
      { 
       return NSOrderedSame; 
      }]; 

這是我對Apple代碼模板做的唯一更改。當我在模擬器6.0上運行它時,代碼在讀取數據時崩潰...

if (![self.fetchedResultsController performFetch:&error]) { 

with objc_exception_throw。順便說一句,這段代碼適用於Simulator 5.1。任何想法有什麼不對?提前致謝。

回答

1

基於Objective-C的排序描述符不能與提取請求一起使用。

從「核心數據編程指南」:

...總之,不過,如果你執行一個直接讀取,您應該 通常不會增加目標爲基礎的C-謂詞或排序描述符 獲取請求。相反,您應該將這些應用於獲取結果 。

順便說一句,你真的想要一個排序描述符,使所有的對象相等嗎?

+0

@CodeMonkey:我無法解釋爲什麼它以前工作,並不再工作。我只知道該文檔指出你不應該使用基於Objective-C的排序描述符作爲提取請求。原因是(我認爲)過濾和排序已經由SQLite層完成。 –