2017-03-06 10 views
8

(पहली पर देखा: Xcode 8.2.1, IOS 10, स्विफ्ट 3) (अभी भी की के रूप में उपस्थित: Xcode 9 बीटा 3, iOS11, स्विफ्ट 4)स्विफ्ट में कोर डेटा वैकल्पिक स्केलर्स (बूल/इंट/डबल/फ्लोट) का प्रतिनिधित्व कैसे करें?

हम सभी जानते हैं कि optionals से पहले लगता Core Data अवधारणा और optionals की अवधारणा से सख्ती से बंधे नहीं है।

और हम भले ही एक Core Data विशेषता Non-optional के रूप में चिह्नित किया जाता है, स्वत: जनरेट NSManagedObject उपवर्ग एक optional प्रकार है कि स्वीकार कर लिया है:

(कुछ लोगों को मैन्युअल रूप से कोई प्रतिकूल प्रभाव के साथ ? निकालने के लिए, कुछ डॉन 'टी, लेकिन उस समय के बगल में है)

(यहाँ उदाहरण से और स्क्रीनशॉट Bool संपत्तियों के लिए कर रहे हैं, लेकिन एक ही Int16/32/64 के लिए चला जाता है, Double, Float)

अब मैं रिवर्स देखा - जब प्रकार Bool की एक विशेषता के रूप में Core DataOptional (और Use Scalar Type चुना जाता है, Xcode डिफ़ॉल्ट रूप से करता है जो) चिह्नित है, स्वत: जनरेट वर्ग एक non-optional प्रकार का एक चर है।

यह आप मतलब? क्या यह एक बग है? व्यवहार कहीं भी दस्तावेज है?

और सबसे महत्वपूर्ण बात यह है कि मैं वास्तव में एक वैकल्पिक Bool का प्रतिनिधित्व कैसे करूं?

मैं कुछ काम arounds के बारे में सोच सकते हैं, लेकिन वे आदर्श नहीं है (उदाहरण के लिए scalars का उपयोग नहीं है, लेकिन वापस Bool की NSNumber प्रतिनिधित्व करने के लिए जा रहे हैं। या (भी बदतर) isVerified_isSet की तरह एक अलग Bool कुछ कहा वाले)


नोट: मैं कुछ और परीक्षण किया था और Default ValueNone करने के लिए या NO पर सेट है, तो चर false के रूप में सहेजा जाता है (भले ही मैं कभी नहीं वास्तव में मेरे कोड में असाइन करें)। यदि Default ValueYES पर सेट है, तो चर true के रूप में सहेजा जाता है। फिर भी, इसका मतलब है कि (स्पष्ट रूप से) इस चर को तर्कसंगत रूप से प्रस्तुत करने का कोई तरीका नहीं है क्योंकि अभी तक सेट नहीं किया गया है।

उत्तर

5

मुझे एक ही चीज़ दिखाई देती है, और मैं इसे एक बग मानता हूं। यह कहीं भी दस्तावेज नहीं है जिसे मैं पा सकता हूं। स्पष्ट रूप से कोर डेटा उद्देश्य-सी शैली धारणाओं को यहां लागू कर रहा है, जहां एक बूलियन NO पर डिफ़ॉल्ट होता है, और एक पूर्णांक 0 पर डिफ़ॉल्ट होता है। कोर डेटा/स्विफ्ट इंटरफ़ेस में कुछ मोटा किनार होता है, और यह वह है जिसे मैंने पहले नहीं माना था।

यह एक अच्छा खोज है, लेकिन मुझे लगता है कि जब तक ऐप्पल इसे संबोधित नहीं करता तब तक आप इसके साथ अटक जाते हैं। आप पहले से ही सबसे अच्छा कामकाज जानते हैं, जो मैं मानता हूं कि महान नहीं हैं। मैं एक बग फाइल करने की सलाह देते हैं।

+0

आपके उत्तर के लिए धन्यवाद। दरअसल जब तक आप इसका जिक्र नहीं करते हैं, मुझे यह भी एहसास नहीं हुआ कि सभी 'स्केलर प्रकार' के लिए एक ही 'मुद्दा' होता है, न केवल 'बूल'।(मैंने अब उल्लेख करने के लिए मूल प्रश्न में संशोधन किया है)। –

2

ऐसा इसलिए होता है क्योंकि उद्देश्य-सी स्केलर प्रकारों में शून्य मूल्य की धारणा नहीं होती है। स्रोत: handling-core-data-optional-scalar-attributes

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