Iphone NSManagedObject中的Setter选择性失败
我有一个NSManagedObject,我正试图用给定的值实例化它。我访问setter的方式如下:Iphone NSManagedObject中的Setter选择性失败,iphone,objective-c,ios,setter,Iphone,Objective C,Ios,Setter,我有一个NSManagedObject,我正试图用给定的值实例化它。我访问setter的方式如下: object.couchID = (NSString *)[dictObject objectForKey:@"_id"]; …这在我的机器上运行正常,但我的搭档在他的机器上运行时会出现以下错误: '-[NSCFString type]: unrecognized selector sent to instance 0x4e465e0' someManagedObject.couchID =
object.couchID = (NSString *)[dictObject objectForKey:@"_id"];
…这在我的机器上运行正常,但我的搭档在他的机器上运行时会出现以下错误:
'-[NSCFString type]: unrecognized selector sent to instance 0x4e465e0'
someManagedObject.couchID = @"some hardcoded string";
大约90%的setter(所有setter的格式都相同)在我的合作伙伴的机器上工作,但有10%的setter会因该错误而失败。他们都在我的机器上工作
我们正在运行完全相同的代码(根据SVN(是的,我知道)),并从同一台服务器获取相同的数据,所以一切看起来都应该正常工作
我们已经检查了正在传递的对象,它们是相同的。注释掉setter可以让代码进入下一个麻烦的setter,但是我们当然需要它来实际工作。我们还应该如何排除故障?提前谢谢
更新1:解锁了那枚风滚草徽章。。。我猜它太粘了,摸不着?欢迎任何想法或猜测。嘿,你可以赚50分*
更新2:喜忧参半的好消息是,从源代码管理检查新版本会在我的机器上导致相同的问题,因此a)这肯定是代码中的某些内容,b)我可以更积极地进行故障排除。感谢您到目前为止提出的所有建议,我将再次讨论它们。您可能需要创建一个临时变量,其值为
object
强制转换为实际的类,例如
MyClass *c = (MyClass *)object; // if object is in fact a MyClass instance
c.couchID = (NSString *)[dictObject objectForKey:@"_id"];
我曾经看到过这样的情况:编译器无法进行思维跳跃,无法意识到您的属性就是您知道的类。在这些情况下,我的解决方案是更加明确。这有意义吗?至少值得一试,不是吗?:-) 您可能需要创建一个临时变量,其值为
object
强制转换为实际的类,例如
MyClass *c = (MyClass *)object; // if object is in fact a MyClass instance
c.couchID = (NSString *)[dictObject objectForKey:@"_id"];
我曾经看到过这样的情况:编译器无法进行思维跳跃,无法意识到您的属性就是您知道的类。在这些情况下,我的解决方案是更加明确。这有意义吗?至少值得一试,不是吗?:-) 如果此代码在合作伙伴的机器上失败:
'-[NSCFString type]: unrecognized selector sent to instance 0x4e465e0'
someManagedObject.couchID = @"some hardcoded string";
似乎您有一个悬而未决的指针:当您尝试调用-setCouchID方法时,我会检查someManagedObject是否被正确保留并且仍然是有效的对象 如果此代码在合作伙伴的机器上失败:
'-[NSCFString type]: unrecognized selector sent to instance 0x4e465e0'
someManagedObject.couchID = @"some hardcoded string";
似乎您有一个悬而未决的指针:当您尝试调用-setCouchID方法时,我会检查someManagedObject是否被正确保留并且仍然是有效的对象 在尝试使用NSManagedObjects中的数据绘制CATiledLayer时,我遇到了几乎相同的问题。什么样的有效对象会出现“无法识别的选择器”异常 这几乎总是发生的,因为在您试图设置或获取属性的点之外的对象上没有保留。在一个单独的线程似乎也有关系 在尝试使用[NSManagedObjectContext lock]绕过此问题并保留新线程中的上下文后,我最终将获取的内容放入一个可变集合,以尝试并保持对它的控制,这似乎在iOS上有效,但在OSX上效果不太好 所以有两种可能性
- 你这样做不是主要的吗 螺纹,主运行中心是否有固定螺栓 在这条线内。检查文件 对于[NSManagedObjectContext锁]。但本质上,处理上下文的每个线程都需要在上下文中保留自己的线程
- 试着把它扔进一个容器里 当你给它做手术的时候。让它成为一个 有点粘。如果那样听起来很抱歉 像伏都教,但它是
- 你这样做不是主要的吗 螺纹,主运行中心是否有固定螺栓 在这条线内。检查文件 对于[NSManagedObjectContext锁]。但本质上,处理上下文的每个线程都需要在上下文中保留自己的线程
- 试着把它扔进一个容器里 当你给它做手术的时候。让它成为一个 有点粘。如果那样听起来很抱歉 像伏都教,但它是
-type
的属性?通常,应该避免给已经存在的属性命名