2010-11-18 13 views
3

私は私のコアデータにBOOLを持っています。 YESまたはNOに設定しない限り、値をnullにします。 これは可能ですか? 私のコードで値がまだ設定されていないかどうかを確認するにはどうすればいいですか?iPhone - Core Data Boolの値は?

私のnsmanagedObjectでは私のBOOLにNSNumberを使用しています。私のコアデータmdoelにはBOOLがあります。

答えて

5

CoreDataを使用すると、デフォルト値を設定できます。 Boolには、 "YES"、 "NO"、 "None"を含めることができます。 デフォルト値を "None"に設定すると、返された値が "null"になります。これはまさに私が必要なものです。

+0

これも私が考えていたものです。私の場合は、hasChildren属性を持つノードがあります。 Noneの場合は、そのノードに子ノードがあるかどうかを確認するためにサーバーに照会する必要があることを意味します。YesおよびNoは、子ノードがあるかどうかを確実に知ることを意味します。 – Sushant

3

モデルの属性タイプとしてBooleanを設定すると、NSNumberを使用して実装されることを意味します。

NOの代わりに値を返さない理由がわかりませんが、実際はそうしないことをお勧めします。偽のデフォルト値を設定するだけで、データの整合性を保った方がはるかに簡単です。

しかし、あなたが絶対に主張しているのであれば、属性がnilであるかどうかをチェックして、まだ値が割り当てられているかどうかを確認することができます。

+4

多くの使用例では、「いいえ」と「設定されていません」の違いがあります。 –

+1

私は違いがあることを認識します。私は以前にそこにいたし、それは完全性の問題を導入するためにバインドされています。私は、-1、0、または1の整数を使うなど、より良い方法があると思います。 –

+1

私は同意します。 -1,0、および1の方が良い解決策です。 – griotspeak

0

正解は「はい」で、「はい」「いいえ」と違う「なし」を使用するという意味があります。つまり、データが完全であることを意味します。コアデータには、特に、データベースをデバッグしたい場合は、「なし」とチェックするのが良い理由があります。

[myManagedObject setValue: nil forKey:@"attributeOfMyManagedObject"]; 

をし、あなたのコアデータの後ろにあなたのSQLデータベースをチェックする場合は、デフォルトの設定を使用する場合は、「NULL」を表示されます。コアデータでは、使用することができます。

関連する問題