2015-07-29 8 views
11

चलें कहते हैं कि मैं इस परिदृश्य पर है ...एक क्षेत्र से एक वस्तु का पता लगाएं?

ViewController1 मुख्य थ्रेड पर एक क्षेत्र से एक Person वस्तु लोड करता है और ViewController2 को पास कर देता। ViewController2 में उपयोगकर्ता इंटरैक्शन उसी Person ऑब्जेक्ट को बदलने का कारण बनता है, लेकिन उपयोगकर्ता ने "सहेजें" दबाए जाने के बाद ही परिवर्तनों को जारी रखना चाहते हैं।

वर्तमान में, ऑब्जेक्ट ViewController2 में ऑब्जेक्ट को बदलते समय एक रनटाइम त्रुटि फेंक दी जाती है जिसमें किसी ऑब्जेक्ट में परिवर्तन लिखने वाले ब्लॉक में किए जाने की आवश्यकता होती है। यह समझ में आता है, लेकिन इस परिदृश्य में मैं वास्तव में परिवर्तनों को तुरंत जारी रखना नहीं चाहता हूं।

  • क्या इन चेक से बचने के लिए किसी दायरे से ऑब्जेक्ट को अलग करने का कोई तरीका है?
  • यदि नहीं है, तो आसपास सुझाए गए काम का क्या होगा? (एक नया उदाहरण के लिए वस्तु प्रतिलिपि बनाई जा रही? अलग वस्तु में परिवर्तन ट्रैकिंग और बाद में उन्हें लागू करने के? दोनों बहुत गंदा लग रहे हैं।)
+0

शायद संबंधित https://github.com/realm/realm-java/issues/1202 – Ixx

+0

यहां देखें: https://realm.io/docs/swift/latest/ "ऑब्जेक्ट अपडेट करना" अनुभाग में, यदि आपके पास है एक प्राथमिक कुंजी जिसे आप 'Realm() जोड़ सकते हैं। जोड़ें (_: अद्यतन:) '। तो ऐसा लगता है कि आपने ऑब्जेक्ट को फिर से बनाया है और जब आप इसे सहेजना चाहते हैं तो लिखना लेनदेन करें और अपडेट करें। – Ixx

+0

धन्यवाद Ixx, यह वही समस्या है जिसका मैं अनुभव कर रहा हूं। मेरी वस्तु काफी बड़ी है (बहुत सारे फ़ील्ड) और मैं इसे हर बार एक नई वस्तु में कॉपी नहीं करना चाहता हूं। :( – lionpants

उत्तर

11

अभी, आप अपनी वस्तु की एक 'स्टैंडअलोन' प्रतिलिपि बना सकते हैं Object(value: existingObject) के माध्यम से, - शायद अब तक का सबसे आसान समाधान होगा, जब तक कि रियलम नेस्टेड लेन-देन की तरह कुछ जोड़ता है जो undo को मनमानी संख्या में परिवर्तनों को आसान बना देगा।

+0

स्विफ्ट में यह एक मौजूदा वस्तु से एक नई वस्तु को जोड़ने के लिए एक तरीका है? ओसी में एक समान तरीका है? –

+2

वर्तमान परीक्षणों के आधार पर, यह ऑब्जेक्ट को अलग करता है, लेकिन संबंधित ऑब्जेक्ट्स को अलग नहीं करता है - एक से संबंधित रिलेशनशिप से संबंधित ऑब्जेक्ट को संशोधित करने का प्रयास करने से अब भी "लिखने के लेनदेन के बाहर ऑब्जेक्ट को संशोधित करने का प्रयास" दिखाता है। – o15a3d4l11s2

+0

यह वर्तमान में है क्षेत्र वस्तुओं को अलग करने का सबसे अच्छा और एकमात्र सरल तरीका ... – virusss8

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