问题标签 [magicalrecord]
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.
objective-c - 对 fetchResultController 如何与 MagicalRecord 一起工作感到困惑
我有一个 NSOperation 子类,这是主要方法:
我像这样定义 fetchResultController 和 defaultContext:
每次我调用 [message save] 时,控制台注销:-NSManagedObjectContext(MagicalRecord) mergeChangesFromNotification: Merging changes to * DEFAULT 语境在主线程上 *
但是 NSFetchedResultsControllerDelegate 永远不会被调用!这是否意味着我将 FetchedResultsController 设置错了?我完全糊涂了。
提前致谢。
ios - 带有 UITableView 示例的 MagicalRecord
有谁知道在基于 TableView 的应用程序中是否有一个很好的教程或示例项目与 MagicalRecord 设置,最好是发生一些后台线程的事情(导入数据,并回调以更新 UI)?我真的找不到任何好的样品。提前致谢。
ios - 带有 MagicalRecord 的核心数据不会保存到 iCloud
我在我的项目中使用 MagicalRecord。到目前为止,它在 SQLite 商店中运行良好。但现在我正在尝试“升级”到 iCloud,以便在我的 iPhone 和 iPad 版本之间进行同步。
但它没有像我预期的那样工作。该应用程序仍然可以正常工作 - 数据正在保存并读回,但它没有像我预期的那样保存在 iCloud 中。
我所做的唯一更改是在 MagicalRecord 设置中。
前:
后:
AAAAA 不是代码中的 AAAAA,而是我来自开发人员资料的私人 ID。
我可以在输出日志中看到检测到 iCloud 并且没有发生错误。我还尝试单步执行代码,一切看起来都很好。
我错过了什么?我需要听一些事件吗?我还没有找到如何将 MagicalRecord 与 iCloud 一起使用的示例。
MagicalRecord 的版本是这个:
https ://github.com/magicalpanda/MagicalRecord
iphone - 使用 magicpanda 的 MagicalRecord 导入多关系数据
我想借助魔法熊猫的 MagicalRecord 将 json 文件导入我的 SQLite-CoreData-Database。这是我的 json 文件的内容:
我正在尝试将文件的内容导入以下核心数据模型:数据模型的图像:http: //twitpic.com/8fa0y9
我使用以下代码导入 json 文件:
导入工作没有给我一个错误,但是当我检查 SQLite 数据库的内容时,我在成分表中有两个相等的条目:
数据库内容的图像:http: //twitpic.com/8fa0k3
目前我有点无助,要解决这个问题,如果有人可以帮助我,我会很高兴。
objective-c - NSFetchRequest 的 NSSortDescriptor 在上下文保存后不起作用
我正在 GCD 调度队列中对 NSManagedObjectContext 进行操作,定义如下:
MR_contextThatNotifiesDefaultContextOnMainThread
是来自MagicalRecord的方法:
在获取我的对象并给他们正确的队列位置后,我记录它们并且顺序是正确的。但是,第二个日志似乎是完全随机的,排序描述符显然不起作用。
我已将问题范围缩小到[self.backgroundContext save:&error]
. 保存背景上下文后,排序描述符被破坏。
我不知道为什么排序描述符不起作用,任何核心数据专家都想帮忙吗?
更新:
这个问题在 iOS 4 上不会出现。我认为原因在于线程隔离和私有队列模式之间的差异。MagicalRecord 自动使用似乎表现不同的新并发模式。
更新 2:
通过添加背景上下文的保存解决了该问题:
更新 3:
MagicalRecord 提供了一种递归保存上下文的方法,现在我的代码如下所示:
很惭愧我一开始没有使用它...
但是,我不知道为什么这会有所帮助,并且很想得到解释。
objective-c - 为什么我的核心数据对象不使用在同一会话中创建的相关对象之间的获取请求显示?
这是一个非常奇怪的情况,我在过去几天一直在努力解决。
我有一个Card
实体与实体上的多对多关系Transaction
。我还使用 Magical Record 来删除围绕管理我的数据存储的样板代码。
我的问题按以下顺序发生:
- 创建一个
Card
对象 Transaction
然后在另一个视图中创建一个对象- 当我检查交易计数时,
[card.transactions count]
我得到 1 作为大小 但是,如果我使用相同的上下文执行获取请求,则事务不存在。我的谓词如下所示:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"card == %@ && deleted == 0", card];
所以逻辑说我可能在保存事务后没有保存上下文,但奇怪的是,如果我退出应用程序然后重新运行它,事务就在那里。如果我创建卡、退出应用程序然后运行应用程序并添加交易,那么步骤 1-4 也可以完美运行。然后我的保存交易代码工作正常。
所以我的问题是,为什么我的对象没有在新创建的父对象上使用获取请求显示,其中“新创建”意味着它是在与子对象相同的会话中创建的。
我创建卡片的代码如下所示:
然后当我保存交易时,我的代码如下所示:
不工作的代码是这样的:
如果卡片是在同一会话中创建的,则 countTransactions 始终返回 0。但如果我退出应用程序并重新启动,它会 100% 工作。它还适用于在退出并重新启动应用程序后向卡添加任何新交易。
objective-c - NSFetchedResultsController 未在初始提取时排序
我有一个核心数据问题NSFetchedResultsController
。我在父实体和子实体之间有一对多的关系。属性中的数组未按(数字是模型中的 int32 属性)childFetchedResults.fetchedObjects
排序。我是否使用便利类别方法number
似乎并不重要。MagicalRecord
但是,如果我使用完全相同的排序描述符对获取的对象数组进行排序,它可以正常工作:
我收集你只能使用 Core Data 在为获取请求指定排序描述符时可以传递给 SQLite 存储的比较器。但我觉得在这种情况下这不重要,因为 SQLite 必须支持按数字排序。
有人解决了这个问题吗?我觉得这与此处描述的问题类似:NSSortDescriptor not being called。
至于MR_requestAllSortedBy
,它在MagicalRecord
,这里是实现:
iphone - MagicalRecord 在 importFromObject 上崩溃:
如果运气好的话,我有点出局了。也许有人可以指出我正确的方向。我正在尝试使 MagicalRecord importFromObject 方法起作用。我所拥有的是:
- iOS SDK 5.1
- 基本 XCode iPhone 项目设置(空应用程序,无核心数据,ARQ)
- CoreData 框架手动添加到项目中
- 添加了带有一个实体的 coredata 数据模型
- 实体具有属性“标题”
Prefix.pch 包含以下内容:
此代码崩溃:
它在此方法中在 NSManagedObject+MagicalRecord.m 中崩溃:
iphone - 使用 MagicalRecord 使用当前实体创建新实体
我正在尝试使用现有实体(传入)设置所有值来创建一个新实体。这是我在托管对象子类中使用的类方法:
我这样称呼它:
正在发生的事情是我正在更改当前实体而不是创建一个新实体。关于我做错了什么的任何想法?
objective-c - 神奇的记录、保存和 NSFetchedResultsController
不确定这是否是 Magical Record 保存方式的问题,或者我只是在某个地方犯了一个菜鸟错误。
我正在使用 NSFetchedResultController (FRC) 和 UITableView 来显示实体列表,当用户点击“添加”带有编辑器的新视图控制器时,会使用[MyEntity MR_createEntity]
. 用户可以在此处添加通过关系添加到主实体的其他实体。当用户在此视图控制器中点击“保存”时,上下文将使用[[NSManagedObjectContext MR_contextForCurrentThread] MR_save]
NSFetchedResultsController 似乎更新了,但是当我点击编辑实体时,没有任何子实体存在。调试似乎表明,即使实体已被保存,FRC 仍然具有具有其临时 ID 的实体。
我[self.tableView reloadData]
在 FRCcontrollerDidChangeContent
委托方法中做得很幼稚。
重新启动应用程序会加载正确的实体,并且子实体会在编辑器视图控制器中正确显示。
看起来 FRC 响应了“主线程”保存事件,但保存实际上是在后台线程上发生的,因此 FRC 看不到它。我已经检查过,所有“我的”操作(设置 FRC、创建和获取实体)都发生在主线程上下文中。
我尝试在 MR_rootSavingContext 上侦听更改通知,并将它们与主线程上下文合并,这有点工作,但我最终在 FRC 中得到了重复的行(一个是正确的“永久”实体,一个是临时实体)。