2011-08-08 13 views
6

मेरे पास एक उत्पाद खोज है जो मेरे उत्पादों में उत्पाद श्रेणियों की खोज करती है, कभी-कभी मेरे उत्पाद कई श्रेणियों में होते हैं जो मुझे डुप्लिकेट परिणाम देता है। मैं उत्पाद तालिका को सीधे खोजना नहीं चाहता क्योंकि ऐसे कई उत्पाद हैं जिनमें कई आकार हैं लेकिन मूल रूप से वही उत्पाद हैं।क्या NSFetchedResultsController का उपयोग करते समय अलग-अलग परिणाम प्राप्त करना संभव है?

क्या NSFetchedResultsController के साथ विशिष्ट खोज परिणाम प्राप्त करने का कोई तरीका है?

उत्तर

11

हाँ आप कर सकते हैं ...

विधि

- (NSFetchedResultsController *)fetchedResultsController; 

के लिए बाहर देखने के लिए और वहाँ निम्न पंक्तियां जोड़ें (इस उदाहरण में हम केवल विशिष्ट "शीर्षक" हमारी प्रबंधित वस्तुओं का गुण प्राप्त) :

[fetchRequest setReturnsDistinctResults:YES]; 
[fetchRequest setResultType:NSDictionaryResultType]; 
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:@"title"]]; 
self.fetchedResultsController.delegate = nil; 

आप

+०१२३५१६४१०६ में देखभाल करने के लिए कैसे आप NSFetchedResultsController से मानों तक पहुंच ... उदाहरण के लिए है
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

डेटा का उपयोग करने के लिए निम्न कोड का उपयोग करें:

NSDictionary* title = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
cell.textLabel.text = [title objectForKey:@"title"]; 
0

आप (Predicate Programming Guide देखें)

यह जटिल है एक NSPredicate उपयोग करने की आवश्यकता होगी, लेकिन आप एक सबक्वेरी

+0

ferdil - क्या आप अपना उत्तर विस्तृत कर सकते हैं? – NSPratik

-1

का उपयोग करते समय बनाने अपने NSFetchRequest आप -setReturnsDistinctResults: का उपयोग करें और YES के लिए सेट कर सकते हैं कर सकते हैं।

+0

का उपयोग करने के लिए आपको setResultType भी सेट करना होगा: NSDictionaryResultType जो एक NSFetchedResultsController को – Slee

+0

@ स्लीयर पसंद नहीं है: अधिक सटीक होने के लिए: FRC NSDictionaryResultType का समर्थन नहीं करता है। –

8

समाधान जो Shingoo प्रदान की के अलावा, कृपया मत भूलना शून्य को NSFetchedResultsController काप्रतिनिधि क्रम में स्थापित करने के लिए स्वचालित अपडेट को अक्षम करने के लिए, जो NSDictionaryResultType और विशिष्ट मानों के साथ काम नहीं करेगा:

self.fetchedResultsController.delegate = nil; 
संबंधित मुद्दे

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