Ios 为什么重新加载应用程序时,核心数据中的布尔值会发生变化?
当我滑动UITableViewCell(其对象来自核心数据)时,它会将单元格的对象设置为“已读”(在代码中:Ios 为什么重新加载应用程序时,核心数据中的布尔值会发生变化?,ios,objective-c,core-data,Ios,Objective C,Core Data,当我滑动UITableViewCell(其对象来自核心数据)时,它会将单元格的对象设置为“已读”(在代码中:isRead变为YES) 这是这样完成的: - (void)swipedToMarkCellRead:(Article *)article { if ([article.isRead isEqualToNumber:@YES]) { article.isRead = @NO; } else { article.isRea
isRead
变为YES
)
这是这样完成的:
- (void)swipedToMarkCellRead:(Article *)article {
if ([article.isRead isEqualToNumber:@YES]) {
article.isRead = @NO;
}
else {
article.isRead = @YES;
}
NSManagedObjectContext *context = self.managedObjectContext;
NSError *error;
[context save:&error];
}
但是,下一次应用程序加载文章时,文章将回到未读状态(或者isRead
等于NO
)。我将isRead
作为核心数据中的一个瞬态属性,因此每当访问它时,我都可以对其进行操作,并对其进行如下操作:
- (NSNumber *)isRead {
[self willAccessValueForKey:@"isRead"];
NSNumber *isRead = [self primitiveValueForKey:@"isRead"];
[self didAccessValueForKey:@"isRead"];
// If at 100% progress (finished) or it's already marked as read
if ([self.progress intValue] >= 1 || [isRead boolValue]) {
isRead = @YES;
}
else {
isRead = @NO;
}
return isRead;
}
不知怎么搞混了?我看不出是什么导致了这种变化。很简单,瞬态属性不是持久存储的;它们从不写入数据库,这就是为什么它们默认返回到
NO
非常简单,瞬态属性不会持久存储;它们从不写入数据库,这就是为什么它们默认返回到
NO
如果要存储值,它不应该是一个瞬态属性,是吗?如果要存储值,它不应该是一个瞬态属性,是吗?