Iphone 无法将对象转换为故障(核心数据)
我试图用下面的代码将对象转化为错误,但失败了 User.mIphone 无法将对象转换为故障(核心数据),iphone,ios,core-data,fault,Iphone,Ios,Core Data,Fault,我试图用下面的代码将对象转化为错误,但失败了 User.m @implementation User ... -(void)memoryWarningHandle{ if (![self.avatar isFault]) { [self.managedObjectContext refreshObject:self.avatar mergeChanges:NO]; if ([self.avatar isFault]) { NSLo
@implementation User
...
-(void)memoryWarningHandle{
if (![self.avatar isFault]) {
[self.managedObjectContext refreshObject:self.avatar mergeChanges:NO];
if ([self.avatar isFault]) {
NSLog(@"isFault");
// Never went into here
}
}
}
...
这里,User
是一个实体,avatar
是User
的一个属性
正如苹果文件中所说:
refreshObject:mergeChanges:更新
托管对象使用持久存储中的最新值
- (void)refreshObject:(NSManagedObject*)对象合并更改:(BOOL)将参数对象标记为托管对象。旗A 布尔值
avatar
必须在[self.managedObjectContext refreshObject:self.avatar mergeChanges:NO]之后出现故障调用了code>,但未调用。这是怎么回事?任何帮助都将不胜感激
编辑1
我测试代码如下:
-(void)memoryWarningHandle{
self.avatar = [UIImage imageNamed:@"avatar.png"];
NSLog(@"self.avatar :%@",self.avatar);
NSLog(@"self.managedObjectContext :%@",self.managedObjectContext);
if (![self.avatar isFault]) {
[self.managedObjectContext refreshObject:self.avatar mergeChanges:NO];
if ([self.avatar isFault]) {
NSLog(@"isFault");
// Never went into here
}
}
}
NSLog结果:
2013-05-23 11:58:30.072 myApp[10967:907] self.avatar :<UIImage: 0x1d5f6e20>
2013-05-23 11:58:30.947 myApp[10967:907] self.managedObjectContext :<NSManagedObjectContext: 0x1e898c10>
2013-05-23 11:58:30.072 myApp[10967:907]self.avatar:
2013-05-23 11:58:30.947 myApp[10967:907]self.managedObjectContext:
UIImage
不是NSManagedObject
的子类,您无法刷新它,它也不会响应isFault
在任何情况下,都不能对NSManagedObject
上的特定属性进行故障诊断,必须对整个对象进行故障诊断。
请尝试[[self-managedObjectContext]刷新对象:自我合并更改:否]
对整个对象进行故障诊断。
如果您只想对图片数据进行故障诊断,请将一对一关系(例如imageContainer
)添加到属性(例如imageData
)中包含图像数据的实体,然后在对象上刷新该关系,如下所示:
[[self managedObjectContext] refreshObject:self.imageContainer mergeChanges:NO]
您的代码中应该有一个异常,例如:发送到实例的未识别选择器…
您可以记录self.managedObjectContext
和self.avatar
?它们是零吗?@DanShelly如果(![self.avatar isFault])这里告诉self.avatar不是错的,我将在后面记录它们:)这并不意味着它不是零。尝试[nil isFault]
您将获得否
@DanShelly我已经更新了帖子,请检查。您是否在某处实现了邮件转发或值取消定义键
?似乎没有。我的意思是在[self.managedObjectContext refreshObject:self.avatar mergeChanges:no]中没有例外;您应该得到[self.avatar isFault]