2010-04-30 5 views
8

मेरे पास एक कोर डेटा प्रोजेक्ट है जिसमें पुस्तकें और लेखक हैं। डेटा मॉडल में लेखकों के पास किताबों और पुस्तकों के साथ कई संबंध हैं लेखकों के साथ 1-1 संबंध हैं। मैं उन सभी पुस्तकों को खींचने की कोशिश कर रहा हूं जिनके पास लेखक नहीं है। इससे कोई फर्क नहीं पड़ता कि मैं इसे कैसे कोशिश करता हूं, कोई परिणाम नहीं लौटाया जाता है। मेरी भविष्यवाणी में मैंने कोशिश की है = शून्य, == शून्य, == शून्य। किसी भी सुझाव की सराहना की जाएगी।आईफोन एसडीके कोर डेटा: सभी संस्थाओं को एक नील रिश्ते के साथ लाएं?

// fetch all books without authors 
- (NSMutableArray *)fetchOrphanedBooks { 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 
[fetchRequest setFetchBatchSize:20]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"author == nil"]; 
[fetchRequest setPredicate:predicate]; 

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

NSString *sectionKey = @"name";//nil; 
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext 
                            sectionNameKeyPath:sectionKey cacheName:nil]; 
BOOL success = [aFetchedResultsController performFetch:nil]; 
NSMutableArray *orphans = nil; 

// this is always 0 
NSLog(@"Orphans found: %i", aFetchedResultsController.fetchedObjects.count); 

if (aFetchedResultsController.fetchedObjects.count > 0) 
{ 
    orphans = [[NSMutableArray alloc] init]; 
    for (Book *book in aFetchedResultsController.fetchedObjects) 
    { 
     if (book.author == nil) 
     { 
     [orphans addObject:book]; 
     } 
    } 

} 

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

return [orphans autorelease]; 

} 
+0

मैं अपनी उचित रूप में विधेय डाल करने के लिए ताकि कोई और वही गलती मैंने किया होगा कोड का संपादन किया। – TechZen

+0

पुस्तक है -> लेखक संबंध आवश्यक है? – TechZen

उत्तर

24

बजाय शून्य की गिनती उपयोग करके देखें:

NSPrdicate *predicate = [NSPredicate predicateWithFormat:@"author == nil || [email protected] =0"]; 
1

प्रयास करें:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"author == nil"]; 

"==" तार्किक बराबर है। बस "=" एक असाइनमेंट है।

मैं हर समय यह गलती करता हूं।

संपादित करें:

ठीक है, मैं किसी भी तरह ओपी उन्होंने कहा कि वह पहले से ही है कि कोशिश की होगी में याद किया। माफ़ कीजिये।

+5

यह प्रतीक उसी तरह से काम करते हैं =, == बाएं हाथ की अभिव्यक्ति दाएं हाथ की अभिव्यक्ति के बराबर है। http://developer.apple.com/library/ios/#Documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html – Danil

संबंधित मुद्दे