首页 > 解决方案 > 使实体关系可编码时出错

问题描述

我试图让一个简单的 NSManagedObject 类符合 Encodable 以便我可以轻松地将其编码为 JSON。

我有一个名为 TestObject 的实体,它与名为 Device 的实体具有一对多的关系。

一切正常,直到我尝试编码一个 NSSet (多关系)。

import UIKit
import CoreData
import Foundation

@objc(TestObject)
public class TestObject:NSManagedObject,Encodable
{

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


    @NSManaged public var testName: String?
    @NSManaged public var devices: NSSet?  // of entity type "Device"

enum CodingKeys: String, CodingKey {
        case testName
        case devices

    }
    public func encode(to encoder: Encoder) throws {
         var container = encoder.container(keyedBy:CodingKeys.self)
        try container.encode(testName,forKey:.testName)
        try container.encode(devices,forKey:.devices)
    }
}

我从编译器收到的错误是

reference to member 'devices' cannot be resolved without a contextual type
        try container.encode(devices,forKey:.devices)

这个编译器告诉我什么,我如何编码我的对象及其关系?

标签: swiftcore-dataswift4nsmanagedobjectencodable

解决方案


推荐阅读