问题标签 [nsbatchupdaterequest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
180 浏览

swift - 如何通知我的 NSFetchedResultsController 我通过 NSBatchUpdateRequest 更改了一些对象?

我创建了简单的NSBatchUpdateRequest

然后执行它们:

控制台上的输出是:

------------- 可选(6)

但是我NSFetchedResultsController管理同一个对象,不知道是不是变了。如何告知NSFetchedResultsController此事?

0 投票
0 回答
119 浏览

ios - NSBatchUpdateRequest - 如何根据当前值计算属性的新值?

我有一个简单的 NSBatchUpdateRequest:

如何根据当前价值计算财产的新价值?

0 投票
0 回答
217 浏览

core-data - NSBatchUpdateRequest 不进行更新

我正在尝试进行批量更新,但没有出现异常,但它告诉我 0 条记录已更新。如果我运行以下代码

然后我得到这个输出:
Set 0 objects to complete (should be 6470)
I found 6470 orders

所以它肯定会看到我期望它看到的对象,但它没有更新它们中的任何一个。我在这里做错了什么?

如果有任何区别,这是在儿童环境中

0 投票
1 回答
2291 浏览

swift - 快速使用 NSPredicate 的 NSBatchDeleteRequest

如何使用带有 NSPredicate 的 NSBatchDeleteRequest 从 CoreData 中删除行。

我想删除超过 30 天的记录。

我不想获取内存中的所有数据,而不是比较和删除,我想使用 NSBatchDeleteRequest,就像我们在 NSBatchUpdateRequest 中所做的那样。

这是到目前为止我写的代码

请迅速给出答案

0 投票
1 回答
177 浏览

ios - NSBatchUpdateRequest 抛出 NSInternalInconsistencyException

尝试执行 NSBatchUpdateRequest 时,我不断收到以下错误。

当在构造函数中正确指定时,错误日志显示“实体(空)”。

我正在运行这是一个测试环境,想知道 NSBatchUpdateRequest 是否支持带有 NSInMemoryStoreType 的 NSPersistentStoreCoordinator。我在文档中找不到任何内容说它不受支持。

下面是我正在使用的代码。实体和属性参数是正确的,不应引起问题。

如果有人有任何想法,我很想听听。

0 投票
1 回答
146 浏览

ios - NSBatchUpdateRequest 不保存可转换属性

我有一个实体 ( TestEntity),其中包含一个包含对象 ( MyObjectClass) 的“可转换”属性。在初始加载时,可转换的保存正确;初始化如下:

但是,当我获取一个对象(我使用 NSDictionaryResultType 作为字典获取)并更新它的“Transformable”属性时,

它成功保存,但是当我再次获取它时,我得到nil了“可转换”属性。

现在这只发生在“NSBatchUpdateRequest”,因为当我使用 MOC 保存时

它保存成功,我可以在再次获取时访问更新的属性。

谁能解释一下?这是否意味着 NSBatchUpdateRequest 不可转换?

我的 NSBatchUpdateRequest 代码:

0 投票
0 回答
57 浏览

swift - 使用 NSBatchUpdate 函数根据标准更新核心数据数据库

我在任何地方都找不到答案。我有一个用简单的核心数据和一个填充数据的实体实现的数据库。每次打开应用程序时,我都需要浏览所有数据库,其中一列包含一个日期。如果日期已经过去(与今天相比),我需要增加一年。

谷歌搜索后,我发现这NSBatchUpdate可能会有所帮助。但是如何遍历数据库中的所有记录并根据标准更新日期值?

提前感谢您的支持。

0 投票
1 回答
222 浏览

ios - NSFetchedResultsController 不知道数据已被 NSBatchUpdateRequest 更改

TL;博士

显然,NSFetchedResultsControllerNSManagedObjectContext通过执行NSBatchUpdateRequest. 是否可以强制NSFetchedResultsController重新加载其数据以便controller(_:didChange:at:for:newIndexPath:)调用NSFetchedResultsControllerDelegate

问题

我正在使用获取的结果控制器来了解基础数据的变化,以便在表视图发生变化时更新它。我正在采用NSFetchedResultsControllerDelegate协议并实施该controller(_:didChange:at:for:newIndexPath:)方法。一切似乎都在工作,因为当我插入、删除或更新单个项目时会调用它的 did change 方法。

当我使用NSBatchUpdateRequest. 当我这样做时,controller(_:didChange:at:for:newIndexPath:)不会调用委托方法(我在获取结果控制器使用的相同上下文中执行这些更新)。

代码

#1:获取结果控制器初始化:

#2:NSFetchedResultsControllerDelegate:

NSBatchUpdateRequest#3:我用来更新一堆项目的函数AppDelegate.myPersistentContainer.viewContext

#4:我只更新一项的功能AppDelegate.myPersistentContainer.viewContext

#4被调用时,委托controller(_:didChange:at:for:newIndexPath:)方法被调用。但是在执行#3时,不会调用委托方法。当通过NSFetchedResultsController执行.NSManagedObjectContextNSBatchUpdateRequest

我尝试过的解决方法

由于我获取的结果控制器不知道数据已更改,因此我考虑像这样手动重新加载它:

所以每次执行#3之后,我都会调用reloadFetchedResultsController()以重新加载获取的结果控制器和表视图。但由于某种原因,它似乎加载了旧数据,因为我的表格视图没有任何变化。

问题

A:是否可以让获取结果控制器知道执行批量更新时数据已更改?

B:是否可以强制我的获取结果控制器重新加载其数据?因为,作为最后的手段,我可​​以在执行#3之后强制重新加载获取的结果控制器,最后强制更新表格视图,因此它将使用来自获取的结果控制器的新批量更新的数据重新加载它的单元格.