2012-01-09 10 views
6

मैं एक searchDisplayController जो पूरी तरह से काम करता है जब अंग्रेजी और अरबी शब्द के लिए खोज के रूप में निम्नानुसार एक विधि का उपयोग किया है:searchDisplayController परिणामों को प्रदर्शित नहीं करता है तो iphone भाषा गैर है अंग्रेजी

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSInteger)scope 
{ 
    NSString *query = self.searchDisplayController.searchBar.text; 

    if (query && query.length) { 
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ClientName contains[cd] %@", query]; 
     [searchResultController_.fetchRequest setPredicate:predicate];  
    } 

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

बहरहाल, यह अगर iphone ठीक काम करता है भाषा अंग्रेजी है, लेकिन अगर मैं आईफोन भाषा को अरबी (वैश्विक सेटिंग्स) में बदलता हूं और अरबी या अंग्रेजी शब्दों में खोज करने की कोशिश करता हूं तो searchResultsController परिणाम प्रदर्शित नहीं करेगा, क्यों?

पेज। जब मैं इस तरह क्वेरी में एक स्थिर अरबी शब्द डाल: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ClientName contains[cd] %@", @"تجريب"];searchDisplayController अरबी शब्द के सही परिणाम प्रदर्शित करेगा تجريب

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

NSExpression *clientNameEx=[NSExpression expressionForKeyPath:@"ClientName"]; 
    NSExpression *aClientEx=[NSExpression expressionForConstantValue:query]; 
    NSPredicate *predicate=[NSComparisonPredicate predicateWithLeftExpression:clientNameEx 
                  rightExpression:aClientEx 
                    modifier:NSDirectPredicateModifier 
                     type:NSContainsPredicateOperatorType 
                    options:0]; 
: मैं इस तरह कोड में विधेय का निर्माण करने की कोशिश की है

लेकिन कोई लाभ नहीं हुआ ...

+1

खोजबार में टेक्स्ट के बजाय searchText का उपयोग करें। और कृपया, NSLog() को खोज टेक्स्ट में प्राप्त स्ट्रिंग और शाब्दिक स्ट्रिंग के साथ तुलना करें जो ठीक है, जैसा कि आप अपने पी में कहते हैं। तो हम जानते होंगे कि समस्या उस स्ट्रिंग के साथ है या नहीं। – Gabriel

+0

मैंने यह किया है, एनएसएलओजी पीएच में एक ही शाब्दिक अरबी स्ट्रिंग दिखाता है। मेरे प्रश्न का खंड, लेकिन जो मुझे पागल बनाता है वह यह है कि परिणाम खाली है !! – JAHelia

+0

और यदि आप दोनों तारों की तुलना '[@ "تجريب" तुलना करें: searchText]' से करें? यह वापस क्या करता है? NSOrderSame? – Gabriel

उत्तर

1

मैं XCode 4, MasterDetail टेम्पलेट, पर CoreData चेकबॉक्स के साथ परीक्षण परियोजना बना दिया है और डिफ़ॉल्ट मास्टर देखने के लिए SearchBarController जोड़ दिया है, को लागू करने की हैडर में UISearchBarDelegate प्रतिनिधि, और searchBarTextDidEndEditing विधि जोड़ा जलाना एक बार किया जाता है दबाया जाता है।

-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{ 
    [NSFetchedResultsController deleteCacheWithName:nil]; 
    self.fetchedResultsController = nil; 
    [self.tableView reloadData]; 
} 

अंतिम चरण fetchedResultsController में जोड़ने के लिए किया गया था:

NSString *query = self.searchDisplayController.searchBar.text; 
if (query.length) { 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"timeStamp contains[cd] %@", query]; 
    NSLog(@"predicate %@", [predicate description]); 
    [fetchRequest setPredicate:predicate]; 
} 

iPhone सिम्युलेटर स्विचड और iOS5 और अरबी सेटिंग्स के साथ यह परीक्षण किया गया। सफल होने वाली सभी खोजें, शब्द "परीक्षण" और शब्द "تجريب" खोजना परिणाम लाता है। हालांकि, शब्द "تجريب" को आपके प्रश्न से चिपकाया गया प्रतिलिपि था, क्योंकि मेरा अरबी थोड़ा सा जंगली है :) मैंने अरबी कीबोर्ड पर पहले अक्षर के साथ डेटाबेस में रिकॉर्ड करने की कोशिश की है और फिर इसके लिए खोज और परिणाम दिखाता है ।

+0

मैंने वही काम किया जैसा आपने किया था लेकिन आईफोन भाषा अरबी – JAHelia

+0

यादृच्छिक विचार है: क्या इससे कोई फर्क नहीं पड़ता कि आपकी विकास मशीन की भाषा xyz है?क्या आपने इसे बदलने की कोशिश की है? – govi

+0

मुझे खेद है कि मैं अभी यह नहीं कर सकता, लेकिन यह अब अंग्रेजी है – JAHelia

1

मुझे अभी this article मिला है और यह मुझे आपका प्रश्न याद दिलाता है। शायद आप इस समाधान का उपयोग कर सकते हैं?

+0

मुझे खेद है, यह आलेख मेरे प्रश्न के मामले में समर्पित नहीं है। वैसे भी आपके प्रयासों के लिए धन्यवाद। – JAHelia