(पहली पर देखा: 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 Data
Optional
(और Use Scalar Type
चुना जाता है, Xcode डिफ़ॉल्ट रूप से करता है जो) चिह्नित है, स्वत: जनरेट वर्ग एक non-optional
प्रकार का एक चर है।
यह आप मतलब? क्या यह एक बग है? व्यवहार कहीं भी दस्तावेज है?
और सबसे महत्वपूर्ण बात यह है कि मैं वास्तव में एक वैकल्पिक Bool
का प्रतिनिधित्व कैसे करूं?
मैं कुछ काम arounds के बारे में सोच सकते हैं, लेकिन वे आदर्श नहीं है (उदाहरण के लिए scalars का उपयोग नहीं है, लेकिन वापस Bool
की NSNumber
प्रतिनिधित्व करने के लिए जा रहे हैं। या (भी बदतर) isVerified_isSet
की तरह एक अलग Bool
कुछ कहा वाले)
नोट: मैं कुछ और परीक्षण किया था और Default Value
None
करने के लिए या NO
पर सेट है, तो चर false
के रूप में सहेजा जाता है (भले ही मैं कभी नहीं वास्तव में मेरे कोड में असाइन करें)। यदि Default Value
YES
पर सेट है, तो चर true
के रूप में सहेजा जाता है। फिर भी, इसका मतलब है कि (स्पष्ट रूप से) इस चर को तर्कसंगत रूप से प्रस्तुत करने का कोई तरीका नहीं है क्योंकि अभी तक सेट नहीं किया गया है।
आपके उत्तर के लिए धन्यवाद। दरअसल जब तक आप इसका जिक्र नहीं करते हैं, मुझे यह भी एहसास नहीं हुआ कि सभी 'स्केलर प्रकार' के लिए एक ही 'मुद्दा' होता है, न केवल 'बूल'।(मैंने अब उल्लेख करने के लिए मूल प्रश्न में संशोधन किया है)। –