@属性 (nonatomic) double longitude &@属性 (nonatomic, retain) NSNumber * longitude; 之间的区别
Differences between@property (nonatomic) double longitude &@property (nonatomic, retain) NSNumber * longitude;
我将 Entity longitude 设置为 double 并创建 NSManagedObject 子类。在 properties.h 我得到的经度是
@property (nonatomic) double longitude;
然后跳出错误为
Assigning to 'double' from incompatible type 'NSNumber *'
下一行
photo.longitude=@([photoDictionary[FLICKR_LONGITUDE] doubleValue]);
在我将代码更改为
之前,事情并不顺利
@property (nonatomic, retain) NSNumber * longitude;
我对这些感到困惑。
如有任何建议,我们将不胜感激。
根据 documentation:
NSNumber is a subclass of NSValue that offers a value as any C scalar
(numeric) type. It defines a set of methods specifically for setting
and accessing the value as a signed or unsigned char, short int, int,
long int, long long int, float, or double or as a BOOL.
即NSNumber
是一个 class,它封装了一个原始值(例如 double
在你的例子中)并提供了一个面向对象的接口(除其他外)。
您想要做的是将类型 NSNumber
的对象分配给类型 double
的 属性 (因此显示错误)。
但是,使用此代码...
photo.longitude=@([photoDictionary[FLICKR_LONGITUDE] doubleValue]);
...您通过在返回的 NSNumber
上调用 doubleValue
从 photoDictionary
获得 double
,然后将其重新包装在 [=11= 中] 使用 NSNumber
文字:@(...)
。如果你删除文字并简单地将 [photoDictionary[FLICKR_LONGITUDE] doubleValue]
直接分配给 photo.longitude
你应该没问题。
我将 Entity longitude 设置为 double 并创建 NSManagedObject 子类。在 properties.h 我得到的经度是
@property (nonatomic) double longitude;
然后跳出错误为
Assigning to 'double' from incompatible type 'NSNumber *'
下一行
photo.longitude=@([photoDictionary[FLICKR_LONGITUDE] doubleValue]);
在我将代码更改为
之前,事情并不顺利@property (nonatomic, retain) NSNumber * longitude;
我对这些感到困惑。
如有任何建议,我们将不胜感激。
根据 documentation:
NSNumber is a subclass of NSValue that offers a value as any C scalar (numeric) type. It defines a set of methods specifically for setting and accessing the value as a signed or unsigned char, short int, int, long int, long long int, float, or double or as a BOOL.
即NSNumber
是一个 class,它封装了一个原始值(例如 double
在你的例子中)并提供了一个面向对象的接口(除其他外)。
您想要做的是将类型 NSNumber
的对象分配给类型 double
的 属性 (因此显示错误)。
但是,使用此代码...
photo.longitude=@([photoDictionary[FLICKR_LONGITUDE] doubleValue]);
...您通过在返回的 NSNumber
上调用 doubleValue
从 photoDictionary
获得 double
,然后将其重新包装在 [=11= 中] 使用 NSNumber
文字:@(...)
。如果你删除文字并简单地将 [photoDictionary[FLICKR_LONGITUDE] doubleValue]
直接分配给 photo.longitude
你应该没问题。