0

我有UITableViewController靜態可編輯單元格。在我的UITableViewController我做CoreData對象,像這樣:NSFetchedResultsController新對象

- (User*)user { 
    if (_user == nil) { 
     _user = [NSEntityDescription insertNewObjectForEntityForName:TABLE_USER inManagedObjectContext:self.managedObjectContext]; 
     NSError* error; 
     [self.managedObjectContext save:&error]; 
     if (error != nil) { 
      abort(); 
     } 
    } 
    return _user; 
} 

我想在NSFetchedResultsController對象,將在一個表中顯示其字段,然後保存對象。 我正在嘗試:

- (NSFetchedResultsController *)fetchedResultsController 
{ 
    if (_fetchedResultsController != nil) { 
     return _fetchedResultsController; 
    } 

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    // Edit the entity name as appropriate. 
    NSEntityDescription *entity = [NSEntityDescription entityForName:TABLE_USER_PROFILE inManagedObjectContext:self.managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    // Set the batch size to a suitable number. 
    [fetchRequest setFetchBatchSize:20]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:NO]; 
    NSArray *sortDescriptors = @[sortDescriptor]; 


    NSPredicate* pred = [NSPredicate predicateWithFormat:@"%@ = %@", TABLE_USER, self.user]; 
    [fetchRequest setPredicate:pred]; 

    [fetchRequest setSortDescriptors:sortDescriptors]; 

    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:TABLE_USER]; 
    aFetchedResultsController.delegate = self; 
    self.fetchedResultsController = aFetchedResultsController; 

    NSError *error = nil; 
    if (![self.fetchedResultsController performFetch:&error]) { 
     abort(); 
    } 

    return _fetchedResultsController; 
} 

但它沒有奏效。我得到空fetchedResultsController。

+0

「NSPredicate」和「TABLE_USER」怎麼辦? –

+0

這是靜態字符串等於'@「用戶」' –

+0

和'self.user'呢?它是一個對象還是一個字符串?你還可以分享'NSFetchRequest'嗎?最後,也許我不明白,但你想知道爲什麼查詢不檢索任何結果,我錯了嗎?謝謝。 –

回答

1

如果self.userNSManagedObject和您查詢針對User實體,你可以嘗試編輯您的謂詞如下所示:

NSPredicate* pred = [NSPredicate predicateWithFormat:@"self == %@", self.user]; 

希望有所幫助。

P.S.如果我的回答不起作用,請嘗試提供一些其他詳細信息(請參閱我的評論)

+0

它的工作原理!非常感謝 –

+0

@IlyaIlin不客氣! –

相關問題