मैं इस स्थिति के लिए मेरे CoreData मॉडल डिजाइन करने के लिए कोशिश कर रहा हूँ लाने:NSFetchedResultsController जटिल अनुरोध और मॉडल
हम Song
वस्तु जो करने के लिए कई कुछ List
साथ रिश्ता है की है।
प्रत्येक List
name
संपत्ति है और यह भी करने के लिए कई Song
क्योंकि एक Song
एक ही समय में प्रत्येक List
में प्रस्तुत किया जा सकता ये कई-से-अनेक संबंध की जरूरत है के साथ संबंध हैं।
मैं किसी भी तरह Song
इन हेडर (List
का नाम) के आधार पर वर्गीकृत रों की सूची प्राप्त करने NSFetchedResultsController
का उपयोग कर की जरूरत है (के बाद से उपयोगकर्ता 10,000 गीत हो सकता है और मैं NSArray
में कहीं यह स्टोर करने के लिए नहीं करना चाहते हैं)।
जब मैं कुछ मूल्य के साथ sectionNameKeyPath:
सेट करने का प्रयास करता हूं, उदा। @"List.name"
मुझे एक त्रुटि मिली है "कई रिश्तों की अनुमति नहीं है" और निश्चित रूप से यह समझ में आता है।
तो मैं मदद कैसे अपने मॉडल डिजाइन Song
रों और कुछ List
तरह "इतिहास"/"अगला बजाना" आदि के लिए सक्षम होने के लिए और NSFetchedResultsController
के साथ सभी डेटा लाने के लिए सक्षम होना करने के लिए की जरूरत है।
किसी भी मदद की सराहना की। अगर मेरी व्याख्या स्पष्ट नहीं थी, तो कृपया अतिरिक्त जानकारी पूछें। मेरी कोड के
भाग:
- (void)initFetch {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Song"];
[fetchRequest setSortDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES]]];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"ANY [email protected] != 0"];
fetchRequest.fetchBatchSize = 20;
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.context sectionNameKeyPath:@"name" cacheName:nil];
[self.fetchedResultsController setDelegate:self];
NSError *error = nil;
[self.fetchedResultsController performFetch:&error];
if (error) {
NSLog(@"Unable to perform fetch.");
NSLog(@"%@, %@", error, error.localizedDescription);
}
}
टिप्पणी के लिए धन्यवाद, लेकिन मुझे एफआरसी के बारे में आपके बयान से असहमत होना चाहिए स्मृति स्मृति को कम करने में मदद नहीं करेगा। उदाहरण के लिए, मेरे ऐप में अब एक प्लेलिस्ट हो सकती है जिसमें 20000 से अधिक गाने शामिल हैं और जब मैं इन सभी रिकॉर्ड्स को प्राप्त करता हूं तो ऐप बस क्रैश हो जाता है। मुझे इन सभी चीजों को मैन्युअल रूप से प्रबंधित करने का विचार पसंद नहीं है और मेरे पास कोई संकेत नहीं है कि यह कैसे करें :) इसके अलावा, [@ ब्रैड का उत्तर] (http://stackoverflow.com/a/1263845/1263701) बताओ कि मेरी स्थिति में एफआरसी बहुत उपयोगी है। – zakhej
ब्रैड का जवाब पूरी तरह से सही है, यह भी कहता है कि मैच मैनेजमेंट की कुंजी होने के कारण मैं बैच आकार के बारे में ऐसा करता हूं। हालांकि वह संबंधों को कवर नहीं करता है, और यही वह है जो मैं कवर करता हूं और आपको किस समस्या का सामना करना पड़ता है। मैं आपके डेटा मॉडल को बदलने की सिफारिश करता हूं ... – Wain
मैं नहीं देखता, एन: एम को मध्यवर्ती वस्तुओं में क्यों तोड़ने में मदद मिल सकती है। यह एन: एम रिश्ते के कार्यान्वयन की समस्या नहीं है। हालांकि, मैं भी कई एफआरसी का उपयोग करने की सिफारिश करेंगे। –