ios - 无法为名为的类创建映射策略(Cocoa 错误 134110)

标签 ios swift core-data

我正在 Core Data 中进行手动/大量迁移。我有数据模型,即 myApp2.xcdatamodelmyApp3.xcdatamodel

myApp3 在两个表之间有一个新表(如联结表),它们都是 TO-MANY 关系。

此外,我还定义了一个NSEntityMigrationPolicy。现在,当我使用此自定义策略(专门为关系和管理数据编写)运行时,我在调用 migrationManager.migrateStoreFromURL

时特别遇到此错误
Optional("Error Domain=NSCocoaErrorDomain Code=134110 \"The operation couldn’t be completed. (Cocoa error 134110.)\" UserInfo=0x7feda0d825b0 {NSUnderlyingException=Couldn\'t create mapping policy for class named (MyTableToMyTablePolicy)}")

我试图查看此错误,但从某种方式来看,它针对的是我已粘贴在下面的 Policy 类。

class MyTableToMyTablePolicy: NSEntityMigrationPolicy {

    override func createDestinationInstancesForSourceInstance(sourceInstance: NSManagedObject, entityMapping mapping: NSEntityMapping, manager: NSMigrationManager, error: NSErrorPointer) -> Bool {

        let sourceKeys:[AnyObject] = sourceInstance.entity.attributesByName.keys.array
        let sourceValues = sourceInstance.dictionaryWithValuesForKeys(sourceKeys)

        let destinationInstance:NSManagedObject = NSEntityDescription.insertNewObjectForEntityForName(mapping.destinationEntityName!, inManagedObjectContext: manager.destinationContext) as NSManagedObject

        let destinationKeys = destinationInstance.entity.attributesByName.keys.array as [AnyObject]

        if mapping.userInfo!["modelVersion"]!.integerValue == 2 {

            for key in destinationKeys {
                let value:AnyObject = sourceValues[key as String]!
                if value.hasText() {
                    destinationInstance.setValue(value, forKey: key as String)
                }
            }

        }
        else { // call the super just
            super.createDestinationInstancesForSourceInstance(sourceInstance, entityMapping: mapping, manager: manager, error: error)
        }

        manager.associateSourceInstance(sourceInstance, withDestinationInstance: destinationInstance, forEntityMapping: mapping)

        return true
    }
}

下面分别是 xcdatamodels myApp2 和 myApp3:

myApp2

myApp3

更新:崩溃日志:

enter image description here

最佳答案

首先,

在 iOS 上进行大量迁移是一个坏主意(tm)。大量迁移不适合在 CPU、内存和启动时间有限的设备上运行。

其次,

您可能只显示了部分错误。你能显示整个错误堆栈吗?通常 Core Data 错误包含内部错误,您可以通过访问 -userInfo 字典打印出这些错误。这将使我们对错误有更深入的了解。

最后,

调试器在哪里中断?哪一行抛出错误?

关于ios - 无法为名为的类创建映射策略(Cocoa 错误 134110),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28169861/

相关文章:

ios - 聚合函数如何处理 Core Data 中的一对多关系

iOS,整合购物卡的最佳方式

ios - 视频不使用 AVMutableVideoCompositionLayerInstruction 旋转

iphone - NSManagedObjectContext 无法删除其他上下文中的对象

ios - 检测 iOS 应用进入后台

即使没有碰撞位掩码,swift skspritenode 也会发生碰撞

swift - 预取相关对象的相关对象

ios - 无法在 iOS 9 上从 xcassets 加载图像

ios - UITableViewCell 中的 2 个标签,无需自定义单元格

ios - URL 未在 Kaizala 中加载 - IOS