我的数据库在更新本地数组中的 NSManageObject 时得到更新
Posted
技术标签:
【中文标题】我的数据库在更新本地数组中的 NSManageObject 时得到更新【英文标题】:My database getting updated while updating NSManageObject in the local array 【发布时间】:2015-07-31 07:18:47 【问题描述】:在我的 ios 应用程序中,我使用 Coredata
来存储数据。在我的应用程序中,我有一个 HomeVC,这个 HomeVC 包含带有复选标记按钮的食物列表。为此,我创建了具有名称和选定属性的“食物”实体。为了在 HomeVC 中显示食物列表,我从数据库中获取数据并存储到本地数组中,并将这个数组绑定到 tableView。当用户单击检查按钮时,我已更新此本地数组中的选定属性。一切正常。
我在更新本地数组中的选定属性时遇到问题,这个属性也被更改到数据库中。
编辑:
NSEntityDescription* entityDesc = [NSEntityDescription entityForName:entityName inManagedObjectContext:self.managedObjectContext];
NSFetchRequest* fetchReq = [[NSFetchRequest alloc]init];
[fetchReq setEntity:entityDesc];
// Fetching rows from database
NSArray* results = [self.managedObjectContext executeFetchRequest:fetchReq error:nil];
//Assigning results to local array
_localArray = [NSMutableArray arrayWithArray:results];
有人知道怎么解决吗?
【问题讨论】:
如何将数据分配给本地数组? @Vishnuvardhan,请查看我的编辑。我已经添加了源代码。 【参考方案1】:所以您想更改数据,但不存储更改并在以后丢弃它们?一个奇怪的要求,但当然可以做到。
您需要创建一个新的托管对象上下文,该上下文可以将应用的主上下文作为父上下文。然后你可以选择:
保存上下文(更改将被“推送”到父上下文,但在保存主上下文之前不会保存到数据库中) 丢弃上下文(不保存任何内容)创建子上下文:
let childContext =
NSManagedObjectContext(concurrencyType:.MainQueueConcurrencyType)
childContext.parentContext = mainContext
【讨论】:
以上是关于我的数据库在更新本地数组中的 NSManageObject 时得到更新的主要内容,如果未能解决你的问题,请参考以下文章
使用本地 json 文件中的数据更新 swift UI 中的列表