2011-02-10 18 views
5

Temel veri veritabanının boş olup olmadığını nasıl test edebilirim? Denedim:temel veri kaynağı boş test var

NSIndexPath *path1 = [NSIndexPath indexPathForRow:0 inSection:0]; 
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:path1]; 
if([[managedObject valueForKey:@"date"] description]!=nil){SOMEFUNCTION}else{SOMEFUNCTION} 

teşekkürler Ben mükemmel itiraf

cevap

18

Eğer çekirdek verilerinde kullandığınız her varlık için bir fetchrequest oluşturmak zorunda. fetchrequest sonuçsuz olarak döndürürse, bu varlığın ana verilerinizde depolanmış nesneleriniz yoktur.

- (BOOL)coreDataHasEntriesForEntityName:(NSString *)entityName { 
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:self.managedObjectContext]; 
    [request setEntity:entity]; 
    [request setFetchLimit:1]; 
    NSError *error = nil; 
    NSArray *results = [self.managedObjectContext executeFetchRequest:request error:&error]; 
    if (!results) { 
     LogError(@"Fetch error: %@", error); 
     abort(); 
    } 
    if ([results count] == 0) { 
     return NO; 
    } 
    return YES; 
} 
1

ama

kodum çalışır: bir şey daha efektif lütfen bunu

+0

Neden bu mükemmel değildir diyorsun? Benim için çalıştı ama ben zayıflığını mı kaçırdım? –

+0

Sadece bunu yapmak için mükemmel bir yol olduğunu hissetmiyorum. ama ben sana yardım ettim – Csabi

0

sonrası

id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:0]; 
    int fufu = [sectionInfo numberOfObjects]; 
    if(fufu!=0){DATABASE IS NOT EMPTY}else{DATABASE IS EMPTY} 

tanıdığın varsa Benim appDelegate uygulanan iki yöntem var:

StoreUrl, sqlite veritabanının yolunu yazdırır. Eğer bir sqlite yöneticisi ile bu yolu açarsanız

, kendi sql veritabanının içeriğini görmek mümkün olacaktır. Ben sqlite veritabanları analiz etmek için bu SQLite Yöneticisi kullanın: SQLite Manager

(Sadece simülatörde bu yöntemi kullanabilirsiniz)

İlgili konular