2014-09-26 6 views
8

मैं कैसे बता सकता हूं कि एनएसएमएनेज ऑब्जेक्ट जारी है या नहीं?कैसे बताएं कि NSManagedObject सहेजा गया है या नहीं?

(के रूप में एक नई वस्तु बीड़ नहीं किया गया है कि अभी तक सहेजा या नष्ट कर दिया गया करने का विरोध किया।)

उत्तर

24

जांच अगर अपने ऑब्जेक्ट id लगातार है

BOOL isSaved = !object.objectID.isTemporaryID; 

isTemporaryID के बारे में दस्तावेज़:

"हाँ यदि रिसीवर अस्थायी है, अन्यथा नहीं। अधिकांश ऑब्जेक्ट आईडी वापस नहीं आती हैं। किसी ऑब्जेक्ट ऑब्जेक्ट संदर्भ में डाली गई नई ऑब्जेक्ट्स को एक अस्थायी आईडी असाइन की जाती है जिसे ऑब्जेक्ट को लगातार स्टोर में सहेजने के बाद स्थायी के साथ प्रतिस्थापित किया जाता है। "

+2

ऐसा प्रतीत होता है तेजी से आप 'उपयोग करने के लिए बजाय' की .temporaryID' .isTemporaryID' –

+0

हाँ है, संपत्ति 'है temporaryID', लेकिन गेटर रीति के' isTemporaryID' सेट किया गया है - तो उद्देश्य-सी इसे '[object.objectId isTemporaryID] के रूप में कॉल करता है' – kpower

+0

लेकिन afaik, किसी ऑब्जेक्ट के लिए एक स्थायी आईडी प्राप्त करना संभव है जो अभी तक जारी नहीं है, अगर मैं गलत हूं तो मुझे सही करें। इससे उत्तर निर्धारित नहीं किया जा सकता है:/ –

4

दाईज-दंजन का उत्तर केवल आईओएस 8.0+ में काम करता है। पुराने संस्करणों के लिए उपयोग करें:

BOOL isSaved = nil != object.objectID.persistentStore; 
+0

नहीं। मैं इसका उपयोग करता हूं निचला ओएसएस –

+0

हम्म, अजीब ... "आईओएस 8.0 और बाद में उपलब्ध" (दस्तावेज़ीकरण)। – kpower

+0

प्रलेखन बग मुझे यकीन है कि –

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