में मैं कोर डेटा से ऑब्जेक्ट्स लाने की कोशिश कर रहा हूं जो किसी दिए गए सेट में नहीं हैं, लेकिन मैं इसे काम करने में सक्षम नहीं हूं।कोर डेटा से वस्तुओं को लाने के लिए सेट
उदाहरण के लिए, मान लें कि हमारे पास उपयोगकर्ता नाम की मूल डेटा इकाई है, जिसमें उपयोगकर्ता नाम, परिवार नाम, दिए गए नाम और सक्रिय जैसे कुछ गुण हैं। उपयोगकर्ता नाम का एक सेट का प्रतिनिधित्व तार की एक सरणी को देखते हुए, हम आसानी से सभी उपयोगकर्ताओं उपयोगकर्ता नाम की उस सूची के लिए इसी लाने कर सकते हैं:
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User"
inManagedObjectContext:moc];
[request setEntity:entity];
NSArray *userNames = [NSArray arrayWithObjects:@"user1", @"user2", @"user3", nil];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userName IN %@", userNames];
[request setPredicate:predicate];
NSArray *users = [moc executeFetchRequest:request error:nil];
हालांकि, मुझे लगता है कि समुच्चय का पूरक लाने के लिए चाहते हैं, यानी, मैं चाहता हूँ सब कोर डेटा में उपयोगकर्ता जिनके पास उपयोगकर्ता नाम सरणी में निर्दिष्ट उपयोगकर्ता नाम नहीं हैं। क्या किसी को यह पता है कि इस मुद्दे पर कैसे पहुंचे? मैंने सोचा कि (i.e., "userName NOT IN %@")
भविष्य में "NOT"
जोड़ने के लिए पर्याप्त आसान होगा, लेकिन एक्सकोड एक अपवाद फेंकता है कि भविष्यवाणी प्रारूप को पार्स नहीं किया जा सका। मैंने बिना किसी किस्मत के अनुरोध प्राप्त करने के लिए उपलब्ध भविष्य निर्माता का उपयोग करने का भी प्रयास किया। दस्तावेज विशेष रूप से सहायक नहीं था। सुझाव? टिप्पणियाँ?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (userName IN %@)", userNames];
बस इतना ही के एक अनुरोध लौटना चाहिए: धन्यवाद अपने सभी मदद :)
काफी सरल ... धन्यवाद, एसएलवी। – tomas
शानदार। मैंने सोचा कि यह काम नहीं कर रहा था। लेकिन ऐसा इसलिए था क्योंकि मेरी सरणी में डेटा दूसरे क्षेत्र से था। धन्यवाद। सरल और प्रभावी। –
नोट: यह NSNumber चर के साथ काम नहीं करता है जो शायद समझ में आता है लेकिन यदि आप NSNumber में enum लपेटते हैं तो शर्म की बात है। उस मामले में '[NSPredicate predicateWithFormat: @" NOT (enumWrapper IN {% d,% d}) ", enum1, enum2] जैसे कुछ का उपयोग करें। –