@ property(非原子)双经度& @property(非原子,保留)NSNumber *经度之间的差异;

时间:2016-12-04 13:24:10

标签: objective-c nsmanagedobject

我将Entity 经度设置为double并创建NSManagedObject子类。在properties.h中,我获得了经度

 @property (nonatomic) double longitude;

然后错误跳出

  

分配到' double'来自不兼容的类型' NSNumber *'

在下面一行

photo.longitude=@([photoDictionary[FLICKR_LONGITUDE] doubleValue]);

在我将代码更改为

之前,事情并没有好转
@property (nonatomic, retain) NSNumber * longitude;

我对这些感到困惑。

任何建议都会令人感激。

1 个答案:

答案 0 :(得分:0)

根据documentation

  

NSNumber是NSValue的子类,它提供任何C标量的值   (数字)类型。它定义了一组专门用于设置的方法   并将值作为有符号或无符号的char,short int,int,   long int,long long int,float,或double或BOOL。

即。 NSNumber是一个封装原始值(例如你的double)的类,并提供面向对象的接口(以及其他内容)。

您要做的是将NSNumber类型的对象分配给类型为double的属性(因此显示错误)。

但是,使用此代码......

photo.longitude=@([photoDictionary[FLICKR_LONGITUDE] doubleValue]);

...您通过调用返回的double上的photoDictionarydoubleValue获得NSNumber,然后使用NSNumber重新包装NSNumber @(...)字面值:[photoDictionary[FLICKR_LONGITUDE] doubleValue]。如果您删除文字并直接将photo.longitude直接分配给class CalendarEvent extends Model{ public function conflicts() { return $this->hasMany(CalendarEvent::class) ->where('calender_event_type','=', $this->calendar_event_type); } } ,那么您应该没问题。