gpt4 book ai didi

ios - 为什么当我重新加载应用程序时,Core Data 中的 bool 值会发生变化?

转载 作者:行者123 更新时间:2023-11-28 18:21:25 25 4
gpt4 key购买 nike

当我滑动我的 UITableViewCell(其对象来自 Core Data)时,它将单元格的对象设置为“读取”(在代码中: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 设为 Core Data 中的一个 transient 属性,因此无论何时访问它,我都可以对它做一些事情,并且我这样操作它:

- (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;
}

这是不是有点令人困惑?我看不出是什么导致了这种变化。

最佳答案

很简单, transient 属性不会持久存储;它们永远不会写入数据库,这就是它们默认返回到 NO 的原因。

"Transient properties are properties that you define as part of the model, but which are not saved to the persistent store as part of an entity instance's data."

关于ios - 为什么当我重新加载应用程序时,Core Data 中的 bool 值会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19778605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com