对于通过 iCloud 更新发送的每个托管对象,此警告/错误都会发送到控制台: 我的托管对象是客户端,并且与评估有一对多的关系,如下所示。 class Client: NSManagedObject { //other NSManaged vars are here @NSManaged var assessment: NSOrderedSet}根据此错误的时间(在无处不在的更新期间)以及这是我在项目中唯一使用 NSSet 对象这一事实,我可以假设此更新期间的函数在期望 NSArray 时正在传递 NSOrderedSet。关闭 iCloud 会消除错误。我发现另外两个人有一个非常相似的问题: Using iCloud enabled Core Data NSArray-taking method Core Data Relation between Objects但是,两者都没有为我的问题提供任何解决方案。现在一切都很好,但是“它很快就会让你感到悲伤。”如果这里没有解决这个问题,我会向苹果开发人员支持提出这个问题。 最佳答案 经过大量研究,我想出了如何解决此错误。 (Apple Dev 论坛没有帮助)。这是由 Swift 1.2 升级引起的错误。他们鼓励你使用他们的新 Set 类而不是 NSSet。这个错误是一种模糊的方式来加强这一主张。我的数据的排序最终由我的 NSFetchedResultsController 处理,因此我不需要对存储的数据进行排序。因此,我开始执行一项任务,将我的一对多关系的数据类型从 NSOrderedSet 更改为 Set。所以我创建了一个新的数据模型,在数据模型检查器中选择了我的关系并取消选中“Ordered”。然后在下次运行时迁移到新模型。 (如下所示)完成后,我将托管对象子类中的数据类型从 NSOrderedSet 更改为 Set。 (或设置)。这产生了很容易在我的代码中修复的编译器错误。新的 Set 类可以轻松转换为数组:Array(mySet)要将一个对象插入到集合中,有一个简单的插入方法。 foo.mySet.insert(objectToInsert) 。旁注:将我的关系转换为 Set 还修复了我在表 View 和 NSFetchedResultsController 中遇到的一些奇怪的排序问题。然后我运行程序,生成数据,卸载程序。再次运行该程序并观看 iCloud 数据填充而没有烦人的错误。繁荣。我希望这可以让某个人免于 10 个小时的困惑(我尝试了很多不同的事情..)我花了很多时间来解决这个问题。关于core-data - "Error: this process has called an NSArray-taking method..."当 iCloud 推送托管对象时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29932892/