iOS8 核心数据 "use of unimplemented initializer"

标签 ios core-data swift

我在尝试运行我的应用程序时遇到以下错误

fatal error :对类“rcresttest.CatalogItem”使用了未实现的初始化程序“init(entity:insertIntoManagedObjectContext:)”

我可以通过将数据模型中的实体类更改为其他内容来绕过此错误,但随后我将在尝试向下转型时得到 swift_dynamicCastClassUnconditional:。

这是 beta6 中的错误还是我做错了什么?

目录项.swift

import CoreData

@objc(CatalogItem)

class CatalogItem : NSManagedObject {
    @NSManaged var id : String
    @NSManaged var slug : String
    @NSManaged var catalogItemId : String

    init(entity: NSEntityDescription!, context: NSManagedObjectContext!, catalogResultsDict : NSDictionary) {
       super.init(entity: entity, insertIntoManagedObjectContext: context)
       id = catalogResultsDict["Id"] as String
       slug = catalogResultsDict["Slug"] as String
       catalogItemId = catalogResultsDict["CatalogItemId"] as String
    }
}

和数据模型

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="6220.8" systemVersion="13E28" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic">
    <entity name="CatalogItem" representedClassName="CatalogItem" syncable="YES">
        <attribute name="catalogItemId" optional="YES" attributeType="String" syncable="YES"/>
        <attribute name="id" optional="YES" attributeType="String" syncable="YES"/>
        <attribute name="slug" optional="YES" attributeType="String" syncable="YES"/>
    </entity>
    <elements>
        <element name="CatalogItem" positionX="-45" positionY="0" width="128" height="90"/>
    </elements>
</model>

编辑:

将数据模型类的名称更改为具有模块前缀后尝试转换后出现错误消息。

2014-08-20 10:49:15.335 rcresttest[63516:4194127] CoreData:警告:无法为实体“CatalogItem”加载名为“rcresttest.CatalogItem”的类。找不到类,改用默认的 NSManagedObject。

最佳答案

这是指定初始化程序的问题。只需在 init 前面添加 convenience 并在 self 上调用 init(entity:insertIntoManagedObjectContext:) 而不是 super

关于iOS8 核心数据 "use of unimplemented initializer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25408984/

相关文章:

ios - 是否可以在单个 plist 中发送多个命令 - 苹果 MDM 协议(protocol)

ios - 解析 : change a pointer's value

ios - 具有关联类型的 Swift 协议(protocol)中的弱属性要求

iphone - NSFetchedResultsController/父子

ios - 如何重置和切换 API 凭据

iphone - 什么是原子存储类型?

ios - 如何在 Swift 中制作渐变圆形路径

ios - Swift inout 参数性能

ios - iOS13 Action Sheet UI问题,无法自定义消息和边框线

ios - 标题上方有/没有图像的可调整大小的 UIButton?