我有一個EntityA
,它有一個可選屬性int32 result
。當我創建EntityA
時,我沒有設置result
屬性。然後,當我獲取它時,我期望它具有nil
值,但由於某種原因,它設置爲3
,即使我沒有設置此屬性。核心數據 - 具有可選屬性的獲取對象
這是怎麼回事?
我有一個EntityA
,它有一個可選屬性int32 result
。當我創建EntityA
時,我沒有設置result
屬性。然後,當我獲取它時,我期望它具有nil
值,但由於某種原因,它設置爲3
,即使我沒有設置此屬性。核心數據 - 具有可選屬性的獲取對象
這是怎麼回事?
第一個可能的問題:
您已在模型編輯器中設置了默認值。選擇屬性並檢查檢查員。
第二可能的問題:
您檢索或顯示錯誤的值。顯示你正在使用的代碼來找出結果是'3'。
3日可能問題:
你設定值後不經意間,也許是在一個循環或類似的東西。對屬性進行文本搜索以在您的代碼中查找可能的事件。
你的int32將被存儲到一個NSNumber對象中。如果您沒有提供值,則不會創建NSNumber對象 - sql會將其視爲NULL。
iOS的核心數據編程指南說:
您可以指定一個屬性是可選的,也就是說,它是不是有一個值所需 。但是,通常情況下,您不鼓勵 這樣做 - 特別是對於數值(通常,您可以使用默認值 - 模型中的默認值爲0的強制屬性獲得更好的結果)。原因是SQL對NULL的特殊比較 行爲與Objective-C的nil不同。數據庫 中的NULL與0不同,並且搜索0將不匹配具有 NULL的列。
因此,將屬性設置爲強制性並將其設置爲不同的值或從頭開始傳入NSNumber可能會更好。
太好了。默認保存了我。謝謝! –