6

मेरे पास एक ऐसा एप्लिकेशन है जिसमें कोर डेटा में कुछ स्थान शामिल हैं, और मैं उपयोगकर्ता के स्थान के निकट होने के कारण उन्हें उपयोगकर्ता को दिखाना चाहता हूं। मैं तालिका दृश्य में स्थानों की सेवा के लिए एक NSFetchedResultsController का उपयोग कर रहा हूं। मैं एक आभासी एक्सेसर विधि है कि उपयोगकर्ता से स्थान की दूरी, कि "वैश्विक" CoreLocationManager का उपयोग कर की गणना की जाएगी रिटर्न बनाने के बारे में सोचा था, लेकिन यह कारण के साथ दुर्घटनाओं: न आया हुआ अपवाद 'NSInvalidArgumentException' की वजह सेउपयोगकर्ता स्थान द्वारा NSFetchedResultsController सॉर्ट करें

समाप्त अनुप्रयोग, कारण: 'मुख्यपथ distanceFromCurrentLocation इकाई में नहीं मिला < NSSQLEntity स्थान आईडी = 4>'

मैं भी उपयोगकर्ता वर्णक्रमानुसार क्रमबद्ध करने का विकल्प दे, तो मैं, इसे पसंद करते अगर मैं NSFetchedResultsController रखा जाएगा यदि संभव हो तो।

मुझे यह कैसे करना चाहिए?

धन्यवाद!

उत्तर

1

वर्चुअल एक्सेसर्स कोर डेटा में काम नहीं करेंगे जब तक कि आपके पास इकाई में परिभाषित एक क्षणिक विशेषता न हो। NSFetchedResultsController (और अन्य सभी कोर डेटा ऑपरेशंस) किसी भी ऑपरेशन करने का प्रयास करने से पहले इकाइयों के ग्राफ को देखते हैं। यदि वर्चुअल प्रॉपर्टी इकाई परिभाषा में दिखाई नहीं देती है, तो NSFetchedResultsController रिपोर्ट करेगा कि ऐसी कोई विशेषता मौजूद नहीं है।

आप distanceFromCurrentLocation नाम से इकाई में एक क्षणिक विशेषता को परिभाषित करना चाहते हैं और आपको वर्चुअल एक्सेसर्स लिखने में सक्षम होना चाहिए और NSFetchedResultsController इसे देखना चाहिए।

+0

मुझे एक क्षणिक संपत्ति का उपयोग करते समय एक ही दुर्घटना मिलती है .. केवल एक मानक संपत्ति बनाते समय यह काम करता है, लेकिन फिर यह अनुमानतः गलत है .. – cgp

+0

यह सुनिश्चित नहीं है कि आप वास्तव में क्या करने की कोशिश कर रहे हैं। क्या आप कोर डेटा इकाइयों में स्थानों को संग्रहीत कर रहे हैं या आप कोर डेटा का उपयोग किसी तालिका में प्रदर्शित करने के लिए स्थानों को व्यवस्थित करने के लिए पहले व्यवस्थित करने के लिए कर रहे हैं? अगर बाद में, तो वह काम नहीं करेगा। – TechZen

1

मैंने किसी स्थान से दूरी से परिणामों को सॉर्ट करने के लिए, वही काम करने की कोशिश की। यहाँ मेरे सवालों में से एक है:

Core Data and Core Location

यह पता चला आप उनकी तुलना करने के स्मृति में सभी स्थानों के लोड करने के लिए है। मैं SQLite का उपयोग कर समाप्त हुआ, जो कार्यान्वित करना अधिक कठिन है, लेकिन इस तरह के कार्य के लिए मुझे बहुत कम सिरदर्द का कारण बन गया।

शायद यह आपके इच्छित उत्तर नहीं है, लेकिन यदि आपके पास एक बड़ा डेटा सेट है, तो मैं SQLite की अनुशंसा करता हूं। यह मेरे लिए सौदा करने के लिए तेज़ और आसान हो गया।

+0

दुर्भाग्य से SQLite मेरे लिए एक विकल्प नहीं है, क्योंकि मुझे मौजूदा कोर डेटा डेटाबेस का उपयोग करने की आवश्यकता है ... वैसे भी टिप के लिए धन्यवाद;) – cgp

3

NSFetchedResultsController की समस्या (या अनुपलब्ध सुविधा) सॉर्ट ऑर्डर और सेक्शन कुंजी पथ के लिए क्षणिक विशेषताओं का उपयोग करने की अनुपलब्ध क्षमता है।

मैं भी इस के साथ संघर्ष किया है, तो आप इस में रुचि हो सकती:

NSFetchedResultsController sections localized sorted

मैं तुम्हें और साथ ही इस दृष्टिकोण का उपयोग कर सकता है अगर आप रिकॉर्ड की एक सीमित सेट की गारंटी दे सकें यकीन है। लेकिन मैं वास्तव में एक और परिष्कृत समाधान देखना पसंद करूंगा।