(最初に気づいた:Xcodeの8.2.1、iOSの10、スウィフト3) (のようにまだ存在:Xcodeの9ベータ3、iOS11、スウィフト4)SwiftのCore Dataオプションのスカラー(Bool/Int/Double/Float)の表現方法?
我々はすべて知っているoptionals
先行のCore Data
コンセプトことと厳密にSwift
の概念に結びついていません。optionals
。
そして、私たちはCore Data
属性がNon-optional
としてマークされている場合でも、自動生成NSManagedObject
サブクラスはoptional
タイプがあることを受け入れている:
(一部の人は手動で悪影響なしで?
を削除し、いくつかのドン「tは、それはポイントの横にあります)
(ここでは一例とスクリーンショットONからBool
性質のためですが、同じことがInt16/32/64
、Double
、Float
のために行く)
は今、私は逆に気づいた - タイプBool
のCore Data
属性はOptional
としてマークされている(とUse Scalar Type
は、Xcodeのは、デフォルトではありませんこれは、選択されている)、自動生成されたクラスは、non-optional
型の変数を持っています。
これは理にかなっていますか?バグですか?行動はどこに文書化されていますか?
さらに重要なことは、実際にはどのようにオプションのBool
を実際に表しているのですか?
私はいくつかの回避策を考えることができ、彼らは理想的ないないようだ(例えばスカラーを使用しますが、バックBool
のNSNumber
表現するつもりはありません。あるいは、(さらに悪い)isVerified_isSet
のような別のBool
と呼ばれるものを持ちます)
注:私はカップルより多くのテストを行なったし、Default Value
がNone
またはNO
に設定されている場合、その変数がfalse
として保存されます(私は実際に私のコードでそれを割り当てることがない場合でも)。 Default Value
がYES
に設定されている場合、変数はtrue
として保存されます。それでも、これは、(明らかに)この変数をまだ設定されていないものとして論理的に表現する方法がないことを意味します。
あなたの答えをありがとう。実際にあなたがそれを言及するまで、私は、同じ「問題」がすべてのScalarタイプで起こることに気付かず、「Bool」だけではありません。(私は今、それを言及する元の質問を修正した)。 –