2016-12-04 44 views
0

我將Entity 經度設置爲double並創建NSManagedObject子類。在properties.h我得到了經度@ property(nonatomic)double longitude&@ property(nonatomic,retain)之間的區別NSNumber * longitude;

@property (nonatomic) double longitude; 

然後一個錯誤跳出來爲

分配從不兼容的類型'雙 '的NSNumber *'

以下行

[email protected]([photoDictionary[FLICKR_LONGITUDE] doubleValue]); 

事情沒有好轉,直到我將代碼更改爲

@property (nonatomic, retain) NSNumber * longitude; 

我很困惑這些。

任何建議將是值得讚賞的。

+0

你需要說出什麼錯誤跳出了,你做了什麼改變,以及新錯誤是什麼。您還需要顯示您的代碼,特別是任何變量的聲明和導致錯誤的行。編輯您的問題以添加此信息,並且人們可能會幫助您。 – CRD

+0

@CRD謝謝你的建議。我做了一些改變。它夠了嗎? –

回答

0

作爲每documentation

NSNumber的是NSValue的一個子類,提供了一個值作爲任何C標量 (數字)型。它定義了一組專門用於設置 並將值作爲有符號或無符號字符,short int,int, long int,long long int,float或double或作爲BOOL訪問的一組方法。

I.e. NSNumber是一個封裝原始值的類(例如,在您的情況下爲double)並提供面向對象的接口(以及其他)。

你要做的是將NSNumber類型的對象分配給double類型的屬性(因此會顯示錯誤)。

然而,與此代碼...

[email protected]([photoDictionary[FLICKR_LONGITUDE] doubleValue]); 

...你通過調用NSNumberdoubleValue獲得photoDictionary一個double回來,然後你使用NSNumber文字在NSNumber重新包裝它: @(...)。如果你刪除了文字並直接將[photoDictionary[FLICKR_LONGITUDE] doubleValue]直接分配給photo.longitude,那麼你應該沒問題。

+1

請注意,'photoDictionary [FLICKR_LONGITUDE]'不必是'NSNumber',只是具有'doubleValue'方法的任何類的實例。事實上,在這種情況下,'NSString'會更有意義。 – CRD

+0

那真棒。完美解決我的問題。 –

+0

@CRD真的很感謝你的筆記。 –

相關問題