2010-07-14 16 views
13

के साथ परिवर्तन ट्रैकिंग और अनुरोध अनुरोध दोनों का समर्थन नहीं करता है मेरे पास एक ऐसा एप्लिकेशन है जो ओएस 3 + के तहत ठीक चल रहा था। लेकिन यह ओएस 4 के तहत काम नहीं करता है। मैं निम्न त्रुटि संदेश मिलता है:'NSFetchedResultsController NSDictionaryResultType'

'NSFetchedResultsController दोनों परिवर्तन ट्रैकिंग का समर्थन नहीं करता और अनुरोध के लाने के साथ NSDictionaryResultType'

इसे यहाँ किसी को भी एक घंटी बजाने करता है?

- (NSFetchedResultsController *)fetchedResultsController { 

    if (fetchedResultsController != nil) { 
     return fetchedResultsController; 
    } 

    /* 
    Set up the fetched results controller. 
    */ 
    // Create the fetch request for the entity. 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    // Edit the entity name as appropriate. 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"myEntity" inManagedObjectContext:managedObjectContext]; 

    [fetchRequest setEntity:myEntity]; 

    [fetchRequest setResultType:NSDictionaryResultType]; 

    [fetchRequest setPropertiesToFetch :[NSArray arrayWithObjects:@"FIELD1",@"FIELD2",@"FIELD3",@"FIELD4",@"FIELD5",nil]];  

    // Setting unique values   
    [fetchRequest setReturnsDistinctResults:YES];  

    // Edit the sort key as appropriate. 
    NSSortDescriptor *initialDescriptor = [[NSSortDescriptor alloc] initWithKey:@"FIELD1" ascending:YES]; 

    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:initialDescriptor, nil]; 

    [fetchRequest setSortDescriptors:sortDescriptors];  

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

    aFetchedResultsController.delegate = self; 
    self.fetchedResultsController = aFetchedResultsController; 
    [aFetchedResultsController release]; 
    [fetchRequest release]; 
    [initialDescriptor release]; 
    [sortDescriptors release];  

    return fetchedResultsController; 
}  

अग्रिम धन्यवाद।

+0

यदि मैं [fetchRequest setResultType: NSManagedObjectResultType] सेट करता हूं [fetchRequest setResultType: NSDictionaryResultType] के बजाय, मेरा ऐप सामान्य रूप से लोड होता है। ' लेकिन [fetchRequest setReturnsDistinctResults: YES] अब और काम नहीं करता है और मैं डुप्लिकेट के साथ समाप्त होता हूं !!!! सहायता कृपया आवश्यक है। :-) –

उत्तर

14

त्रुटि इस तथ्य का जिक्र कर रही है कि आप NSDictionary परिणाम प्राप्त करने का प्रयास कर रहे हैं, लेकिन फिर भी परिवर्तन के लिए देखने के लिए प्राप्त परिणाम नियंत्रक की अपेक्षा भी कर रहे हैं। चूंकि परिवर्तन केवल NSManagedObjects के माध्यम से प्रचारित होंगे, इसलिए प्राप्त परिणाम नियंत्रक अब अपना काम नहीं कर सकते हैं।

NSManagedObjectResultType का उपयोग नहीं करता है क्योंकि setPropertiesToFetch: अब लागू नहीं है। इसके बजाए, परिणाम सेट ज्ञात होने के बाद आपको अपने आप को कुछ सह-संचालन करना होगा, जो एक प्राप्त परिणाम नियंत्रक के साथ उपयोग करना मुश्किल होगा।

सबसे अच्छा जवाब कैश नाम या प्राप्त परिणाम नियंत्रक के लिए एक प्रतिनिधि सेट नहीं करना है, इस मामले में यह not perform any change tracking होगा।

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