【问题标题】:Property cannot be marked @NSManaged because its type cannot be represented in Objective-C属性不能被标记为@NSManaged,因为它的类型不能在 Objective-C 中表示
【发布时间】:2018-12-22 00:23:18
【问题描述】:

我正在尝试将自定义类保存到核心数据中,但它在生成的 NSManagedSubClass 中的 @NSManaged public var deck: [card]? 上给了我这个错误。谁能指出我正确的方向?

extension Deck {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Deck> {
        return NSFetchRequest<Deck>(entityName: "Deck")
    }

    @NSManaged public var deck: [card]?
    @NSManaged public var name: String?

}

【问题讨论】:

    标签: objective-c swift core-data


    【解决方案1】:
     @NSManaged public var deck: [card]?
    

    这行代码的card是一个自定义类,你不能在你的NSManagedObject中使用它作为数据类型。

    解决方案是让 Card 成为 NSObject 的子类:

    class Card: NSObject {
    

    【讨论】:

    • 谢谢这有效,但现在我在保存上下文时收到“无法识别的选择器发送到实例”错误,知道这是什么意思吗?
    • 这里是代码 - let addedDeck = Deck(context: context) addedDeck.name = deckNameInput.text addedDeck.deck = cardArray ad.saveContext()
    • “ad”是指“let addedDeck = Deck(context: context)”吗?你把“addDeck”写错了“ad”吗?我认为问题在于对象“ad”没有 saveContext() 方法。
    • 没有抱歉的广告是我将上下文保存到应用委托的快捷方式
    • 让 ad = UIApplication.shared.delegate 为! AppDelegate let context = ad.persistentContainer.viewContext
    猜你喜欢
    • 2019-02-24
    • 2018-09-08
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多