12

numaralı belgede bulunmayan keypath "objectID"kullanıyorum. Uygulamamda Documents listesini yüklemek için kullanıyorum. Şu anda aktif olanı hariç tüm Documents yüklemek istiyorum.Temel Veriler:

_Document sınıfı oluşturmak için Rentzsch'ın MOGenerator kullanıyorum ve sonra tüm özel kodumu Document alt sınıfına koydum. _Document, DocumentID türünde objectID özelliği üretir. denetleyici kendisi de

controller.currentDocID = self.document.objectID; 

, tembel yük böyle fetchedResultsController:

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

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(objectID != %@)", self.currentDocID]; 
    [fetchRequest setPredicate:predicate]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"dateModified" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 

    [fetchRequest setSortDescriptors:sortDescriptors]; 

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

    [aFetchedResultsController release]; 
    [sortDescriptor release]; 
    [sortDescriptors release]; 

    return fetchedResultsController; 
} 

fetchedResultsController yükler denetleyicisi oluşturur sınıfta

, ben kontrolörün currentDocID özelliğini ayarlayın

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath objectID not found in entity <NSSQLEntity Document id=1>' 
: benim app istisnası ile çöker 0

Tüm NSManagedObjects öğelerinin geçici veya kalıcı olsun, bir objectID'si olduğu anlayışım budur. Durum böyle değil mi? Düşüncesi olan var mı?

cevap

10
currentDoc geçerli belgeyi temsil NSManagedObject örneğine bir referanstır

[NSPredicate predicateWithFormat:@"self != %@", [self currentDoc]] 

okumak için yüklemi değiştirin

.

Çekirdek Verileri, eşitlik denetimini dahili olarak yapar.

+2

Neden biliyor musunuz? ... "" self! =% @ ", [Self currentDoc]]', "... @" ile aynı değil (objectID! =% @) ", Self.currentDocID] '. Bu gönderiye göre http://stackoverflow.com/a/2306550/647644 eşdeğer olmalıdır. – Lindemann

+0

@Lindemann Bunun yerine yeni bir soru oluşturursanız en iyisi. –

İlgili konular