2012-08-23 16 views
5

Sorun yaşıyorum CoreData ile ilgili nereden geldiğini bilmiyorum. Veritabanımda, (bire çok ilişki kullanarak) öğeleri içeren kategorilerden (ad ve açıklama ile) bir grup var.NSFetchedResultsController 0 bölüm var

Ben Category sınıfının bir nitelik verilen bölümlerde benim tablo görünümüne bölmek istiyorum ama sectionNameKeyPath: kullanarak bunu yapmak için çalışırken, ortaya çıkan NSFetchedResultsController 0 bölümden oluşmaktadır. Eğer bu parametreye nil geçersem, 1 bölümden oluşur.

- (NSFetchedResultsController*) fetchedResultsController 
{ 
    if(fetchedResultsController) 
     return fetchedResultsController; 

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

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

    // Edit the sort key as appropriate. 

    NSSortDescriptor *checkDescriptor = [[NSSortDescriptor alloc] initWithKey:@"checked" 
                    ascending:YES]; 
    NSSortDescriptor *indexDescriptor = [[NSSortDescriptor alloc] initWithKey:@"orderIndex" 
                    ascending:YES]; 
    NSArray *sortDescriptors = @[checkDescriptor, indexDescriptor]; 

    [fetchRequest setSortDescriptors:sortDescriptors]; 

    // Edit the section name key path and cache name if appropriate. 
    // nil for section name key path means "no sections". 
    fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
                    managedObjectContext:self.managedObjectContext 
                    sectionNameKeyPath:@"checked" 
                       cacheName:nil]; 

    NSError *error = nil; 
    if (![fetchedResultsController performFetch:&error]) { 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
     return nil; 
    } else { 
     fetchedResultsController.delegate = self; 
     return fetchedResultsController; 
    } 
} 

cevap

1

NSFetchedResultsController belgelere bakın::

kod şudur sectionNameKeyPath (sizin durumda "isim") için kullanılan anahtar birinci sıralama açıklayıcıda kullanılan aynı anahtar olmalıdır ("işaretli" Senin durumunda). Farklı olabilirler ama sonra her iki anahtar da aynı göreli siparişi oluşturmalıdır.

Sizin durumunuzda, "name" üzerinde ek bir sort tanımlayıcı eklemek istediğinizi ve bunu birinci sıralama tanımlayıcısı olarak kullandığınızı varsayalım.

+0

0 bölümleri oluşturmaya devam ediyor ... – gskbyte

+0

FetchedResultsController'ınızı @synthesize ettiniz mi? Benzer bir sorun yaşadım ve sorun buydu. – Giovanni

İlgili konular