问题标签 [magicalrecord-2.1]

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 回答
413 浏览

ios - MagicalRecord:如何执行后台保存

我正在构建一个新闻应用程序,它基本上使用 AFNetworkOperation 从远程服务器获取数据(所有操作都放在 NSOperationQueue 中,以便正确管理同步过程和进度)。

每个 AFNetworkOperation 的每个完成块创建/删除/更新核心数据实体。

在同步过程的整个结束时,为了使所有更改持久化,我使用以下代码行执行完整保存

不幸的是,它在我的保存操作期间总是阻塞主线程。

我可能无法正确使用 MagicalRecord,因此欢迎任何建议。

0 投票
1 回答
1149 浏览

ios - 在后台保存条目会导致崩溃并仍然阻塞 UI

我从远程 API 获得响应,对其进行解析并分配到一个数组中,然后循环该数组以保存实体中的每个元素:

for 循环代码正在保存到 coredata 中,但一段时间后,应用程序崩溃,其余条目被中断,因此没有保存。

这是 for 循环执行保存时的日志:

我正在使用saveWithBlock:方法,因为saveInBackgroundWithBlock:不推荐使用其他方法。

我有几个问题:

- 我应该在块内进行 for 循环,还是应该将块放在 for 循环内?-我应该使用什么方法来确保应用程序不会崩溃?是在后台保存数据的方法吗?因为保存时 UI 仍然被阻止。

0 投票
2 回答
894 浏览

ios - 使用 MagicalImport 导入数据后如何保存上下文?

我使用 MagicalImport(2.1 版)MR_importFromArray 方法导入了一个 json 数组。我正在尝试使用 MR_findAll 检索导入的 NSManagedObjects,但没有任何成功。以下是我迄今为止尝试过的变体:

这是我在控制台中看到的错误:

知道我做错了什么吗?

0 投票
1 回答
1440 浏览

ios - 正确设置 MagicalRecord 以在后台线程上保存 rootSavingContext

我一直在为我当前的项目(v2.1)尝试 MagicalRecord 和 MagicalImport。到目前为止一切都很好,除了我有时会看到我的 UI 线程在我注入新实体时被锁定。这就是我插入新实体的方式:

保存实体时,我在调试控制台中注意到了很多:

我已经浏览了 github 上的 MagicalRecord 代码,似乎他们正在使用此处提到的 3 级 MOC 策略:http: //www.cocoanetics.com/2012/07/multi-context-coredata/。在这种情况下,根上下文应该保存在后台线程上,而不是日志建议的主线程上。我使用以下行来启动和运行 coredata 堆栈:

我在设置它的方式上做错了吗?为什么我的根上下文没有保存在后台线程上?

0 投票
1 回答
278 浏览

core-data - 使用 MagicalRecord 管理上下文保存的最佳实践?

我刚刚从 MagicalRecord 下载了最新版本(开发人员),以修复在验证我的应用程序的最新更新时收到的一些警告。

我现在发现MR_saveNestedContexts已被弃用,取而代之的是MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error)

这似乎需要编写很多代码来保存对 Core Data 存储的每个更改/添加;我的应用程序中有 17 个不同的地方使用MR_saveNestedContexts根据Loriot 的这篇文章,我的想法是创建一个方法并将参数传递给它。

在思考这个问题时,我想知道 MR 是否存在“最佳实践”之类的东西?

0 投票
0 回答
1373 浏览

ios - 子上下文未填充对默认上下文的更改 (MagicalRecord)

我尝试了这里描述的相同问题。问题是使用 DEFAULT 上下文的子 MOC 保存在 coredata 中,90% 的时间,主线程上下文中的结果会随着来自子 MOC 的更改而更新,但有时它们不会。

在我的测试中,我重复编写相同的实体(不是太快,使用 UI):一个广告实体(最喜爱的计数)以及广告和用户之间的最喜欢的关系。

从 DEFAULT Context 的子 MOC 保存时,这是 MagicalRecord 的预期输出(我也打印了 updatedObjects 计数):

**注意:子 MOC 注册了 4 次更新,但在这种情况下,有两个对象(图像元数据)更新了相同的信息。

但有时这是获得的输出(父母没有更新的对象):

我使用串行队列对 CoreData 执行所有写操作。这个串行队列为当前线程创建一个子 MOC。这是作者的代码:

另一方面,当我使用 [MagicalRecord saveUsingCurrentThreadContextWithBlock:]UI MainThread 时,更改总是填充到 ROOT 上下文和持久存储中:

的代码[MagicalRecord saveUsingCurrentThreadContextWithBlock:]与我写的类似(我只写它是为了使所有写入顺序):

当我在做这个测试时,CoreData 中没有其他类型的写入。我在这里发布了 POST FAVORITE 示例,但 DELETE FAVORITE 是在帖子之间完成的,并且错误在帖子和删除中随机发生。服务器的响应也已正确验证。

笔记

传递给代码块的对象上下文被忽略。我总是使用[EntityClass MR_CreateEntity]它使用实际的线程上下文。并且始终使用MR_saveWithOptions:completion:的上下文是执行块的线程上下文。因此,所有操作都使用相同的上下文。该应用程序非常复杂并且在大多数情况下都可以正常工作,但是这个错误可能会造成比我现在看不到的更多的麻烦。

0 投票
2 回答
1259 浏览

ios - Magical Record appears to save, but changes are lost if app is terminated

I'm using Magical Record 2.1 to handle the data persistence in my app. If I create a new entity, set some it's attributes and save, it works fine. However, later, if I fetch that entity, update it's attributes and save, subsequent fetches have the new data until I terminate the app and restart. During the new app session the old data reappears.

This is how I create a new entity:

I'm using MRDefaultContext having read this blog post: http://saulmora.com/2013/09/15/why-contextforcurrentthread-doesn-t-work-in-magicalrecord/

In this case my main attribute is a dictionary, and I set it like this:

This is how I save it:

I display my data in a collection view, and at this point everything looks fine. If I terminate and restart the data is still there.

If I fetch the entity again and update the attributes like this:

Then save using the same save code as above, and then update my collection view using the code below, all looks good.

That is, until I quit the app and restart.

If you're wondering, I'm using FTASync, and this only supports MR 2.1, which is why I haven't upgraded to the latest version.

Thanks!

0 投票
3 回答
496 浏览

objective-c - awakeFromInsert 使用嵌套上下文调用了两次

本项目使用 Mogenerator 和 Magical Record。我已经找到了一个错误,awakeFromInsert即被调用了两次。我假设我的每个上下文都有一次。这是一个问题,因为我需要像这样在这个 NSManagedObject 上监听 NSNotifications:

但是 awakeFromInsert 被调用了两次,这很烦人。我想在第一次创建 NSManagedObject 时调用一次方法。

经过搜索这个解决方案似乎很有意义。但是,当使用 Mogenerator 和 MagicalRecord 时,我看不到如何将类别添加到 NSManagedObject。没有一些复杂的覆盖。

在 MagicalRecordMR_createEntity通话中

这个问题有更简洁的解决方案吗?

0 投票
2 回答
188 浏览

ios - coredata + MagicRecords,如何在后台查找All

自从我决定通过类似这样的方式在后台获取所有数据后,我就遇到了这个问题

第一次启动时它工作正常,如果你进入另一个视图控制器并等待几分钟然后回来,所有找到的实体都变成了故障状态并且没有更多的属性可以访问

我首先将 GCD 用于后台队列,然后我尝试创建自己的队列

它仍然有问题

我查看了 MagicRecords 的来源,它似乎自动为当前线程创建新上下文

我的想法不多了,请帮忙

提前谢谢

0 投票
2 回答
338 浏览

ios - MagicalRecords importFromArray 返回空数组

我正在使用下面的代码来创建我的 Team NSManagedObjects。但是当我打印我的数组对象时,Xcode 控制台说我数组是空的。

完成块调用但我不明白为什么?未创建对象。有什么建议或解决方法吗?

神奇的记录似乎创造了记录,但有一些延迟。