【问题标题】:My database getting updated while updating NSManageObject in the local array我的数据库在更新本地数组中的 NSManageObject 时得到更新
【发布时间】: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,请查看我的编辑。我已经添加了源代码。

标签: ios core-data nsarray nsmanagedobject nsmanagedobjectcontext


【解决方案1】:

所以您想更改数据,但不存储更改并在以后丢弃它们?一个奇怪的要求,但当然可以做到。

您需要创建一个新的托管对象上下文,该上下文可以将应用的主上下文作为父上下文。然后你可以选择:

  • 保存上下文(更改将被“推送”到父上下文,但在保存主上下文之前不会保存到数据库中)
  • 丢弃上下文(不保存任何内容)

创建子上下文:

let childContext = 
       NSManagedObjectContext(concurrencyType:.MainQueueConcurrencyType)
childContext.parentContext = mainContext

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多