2013-05-28 6 views
9

他の誰かがこれを遭遇した場合、または理由があって何か間違っていると思います。ブール属性を持つCoreDataエンティティがNSNumberオブジェクトとして保存されています

私はCoreDataを持つアプリを持っています。スキーマには、 'unlocked'属性を持つ 'content'エンティティがあり、これはBooleanに設定されています。

@property (nonatomic, retain) NSNumber * unlocked; 

私はcontent.hのbooleanに変更した場合、私はコンパイルARCを得る:としてcontent.h内

しかし、私はXcodeのかのエンティティのためのOBJのCクラスを保存し、ロック解除が表示されますエラー。しかし、私はNSNumberオブジェクトとして私はそれを取得しようとすると、それが戻って矛盾して来ている場合(NSLogを印刷している場合、私は実行するたびに別の値として戻ってくるように)。

NSStringのロックを解除して「はい」または「いいえ」に設定し、関連する点でそれを比較することができますが、なぜこのようなことが起こったのか誰かが知っているかどうかを知りたいそれをブール値として保持する方法があります。

ありがとうございます。

+2

Xcodeで管理対象オブジェクトのサブクラスを作成するときに、「プリミティブデータ型にスカラープロパティを使用する」オプションを選択すると、 'BOOL unlocked @ property(nonatomic) 'が表示されます。 –

答えて

12

CoreDataには、BOOLでないオブジェクトが格納されます。

[NSNumber numberWithBool:YES]

は、属性を設定するには、あなたが[content.unlocked BOOLVALUE] = myboolを読み取ることによって、それを使用することができます方法です。

+6

リテラル構文を使用して、ブールコアデータ属性を設定することもできます。 'object.boolAttribute = @ YES' ' object.boolAttribute = @ NO' – lukestringer90

+0

説明のために乾杯ます。 '[content.unlocked boolValue]'はそれを有効にしました。 – Niazipan

2

BOOLsは、あなたのsqliteのテーブルを見れば、あなたは彼らが整数として格納されている表示されます(コアデータにNSNumbersのように保存されている。だから、あなたが保存する前NSNumberBOOLを変換し、BOOLNSNumberを変換する(または。

を取得するときと同じように、ある0/1私たちが)しかし私は、任意の矛盾を見ていませんでした - 保存NSNumberはそれがNOに相当し、ゼロでないならば、それはYESで、ゼロであれば

+0

その後、これを取り出すと、不一致の原因となっていました。助けをお祈りします。 – Niazipan

関連する問題