2009-06-19 14 views
10

तो मैं मूल डेटा से वस्तुओं को लाने की कोशिश कर रहा हूं। मेरे पास 80 ऑब्जेक्ट्स की सूची है, और मैं UISearchBar का उपयोग करके उनके माध्यम से खोज करने में सक्षम होना चाहता हूं। वे एक टेबल में प्रदर्शित होते हैं।पूर्वानुमान के साथ कोर डेटा पूछताछ - आईफोन

पूर्वानुमान पर सेब प्रलेखन का उपयोग करके, मैंने UISearchBar प्रतिनिधि विधियों के एक में निम्न कोड डाल दिया है।

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    if (self.searchBar.text !=nil) 
    { 
    NSPredicate *predicate =[NSPredicate predicateWithFormat:@"name LIKE %@", self.searchBar.text]; 
    [fetchedResultsController.fetchRequest setPredicate:predicate]; 
    } 
    else 
    { 
    NSPredicate *predicate =[NSPredicate predicateWithFormat:@"All"]; 
    [fetchedResultsController.fetchRequest setPredicate:predicate]; 
    } 

    NSError *error = nil; 
    if (![[self fetchedResultsController] performFetch:&error]) { 
     // Handle error 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); // Fail 
    }  

    [self.tableView reloadData]; 

    [searchBar resignFirstResponder]; 
    [_shadeView setAlpha:0.0f]; 
} 

अगर मैं उन वस्तुओं से एक का नाम संपत्ति के लिए एक सटीक मिलान खोज क्षेत्र में टाइप करें, खोज से काम करता है, और यह वस्तु के नाम के साथ एक एकल कक्ष के साथ तालिका repopulates। अगर मैं सही नाम नहीं खोजता, तो मैं बिना किसी परिणाम के समाप्त होता हूं।

कोई विचार?

+0

कोड पर स्वरूपण की कमी के बारे में खेद है, मैं कोड नमूना टैग – gburgoon

+0

जोड़ने के लिए भूल गया हूं आप कोड को सही तरीके से प्रारूपित करने के लिए अपनी पोस्ट संपादित कर सकते हैं ... – CMPalmer

उत्तर

15

ऐसा लगता है कि आईफोन को LIKE ऑपरेटर पसंद नहीं है। मैंने इसे '[cd]' के साथ बदल दिया और यह जिस तरह से मैं चाहता हूं वह काम करता है।

1

क्या आपने इसे MATCH और नियमित अभिव्यक्तियों का उपयोग करके आजमाया था? बस देखने के लिए अगर कुछ ऐसा है कि iPhone या नहीं पर बचा जाना चाहिए है ...

+1

Ya, मिलान को अपवाद को फेंकने का कारण बनता है। यह सिर्फ अजीब है क्योंकि सेब अपने दस्तावेज़ में LIKE ऑपरेटर का बहुत उपयोग करता है, लेकिन यह जिस तरह से कहता है, वह काम नहीं करता है। – gburgoon

5

उपयोग [सीडी] शामिल की तरह के बजाय उत्सुक, और परिवर्तन:

NSPredicate *predicate =[NSPredicate predicateWithFormat:@"All"];

रहे हैं:

NSPredicate *predicate =[NSPredicate predicateWithFormat:@"1=1"];

1

ठेठ कोर डाटा आवेदन में एक NSF fetchedResultsController हटा देना चाहिए:

[NSFetchedResultsController deleteCacheWithName: [self.fetchedResultsController cacheName]]; 

अन्यथा आपको एक अपवाद (आदर्श) मिलेगा या आपके पास अजीब व्यवहार होगा।

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