Ios “我的一些类变量”;“未设置”;他们自己

Ios “我的一些类变量”;“未设置”;他们自己,ios,objective-c,core-data,Ios,Objective C,Core Data,我有一个通常在xcdadmodeld中定义的类。这样的版本控制是一个PITA,所以当我想添加一些次要变量时,我只是简单地添加了它们;第一行已经存在并且在模型中定义,第二行不在模型中: 在.m中,我有: @dynamic latitudeNorth; @dynamic latitudeNorthEast; 我也尝试过: @dynamic latitudeNorth; @synthesize latitudeNorthEast; 我将值从JSON字符串加载到这些浮动中 self.latitude

我有一个通常在xcdadmodeld中定义的类。这样的版本控制是一个PITA,所以当我想添加一些次要变量时,我只是简单地添加了它们;第一行已经存在并且在模型中定义,第二行不在模型中:

在.m中,我有:

@dynamic latitudeNorth;
@dynamic latitudeNorthEast;
我也尝试过:

@dynamic latitudeNorth;
@synthesize latitudeNorthEast;
我将值从JSON字符串加载到这些浮动中

self.latitudeNorth = [inDictionary[@"latitude_north"] floatValue];
self.latitudeNorthEast = [inDictionary[@"latitude_1"] floatValue];
如果我检查这些值,它们是正确的。稍后我会回去检查这些值

if (inLatitude > self.latitudeNorth) return false;
coords[0] = CLLocationCoordinate2DMake(self.latitudeNorthEast, self.longitudeNorthEast);
当我查看调试器中的值时,self.latitEndorth有一个合适的值,self.latitEndorth为零


对于不属于模型的IVAR,实例似乎已失去其值。然而,我的印象是这很好。我想我遗漏了一些其他的东西——可能是直接声明?

如果您的属性不是核心数据模型中的属性,那么当对象变成错误时,该值可能会被清除。核心数据稍后可以再次从存储中获取对象,但由于属性不是属性集的一部分,因此属性为空

为什么要使用动态。如果要编写动态属性,则必须为属性编写setter和getter方法。我认为,如果不定义getter和setter属性,编译器将导致崩溃或出现错误,无法编译。

float表示坐标失去精度。你为什么不使用double?这就是为什么我也尝试了@synthesis。两者都可以编译,但似乎都不能解决问题。我可以很好地看到这些值被读取到字段中,然后稍晚一点,它们为零。
if (inLatitude > self.latitudeNorth) return false;
coords[0] = CLLocationCoordinate2DMake(self.latitudeNorthEast, self.longitudeNorthEast);