ios - 核心数据 Swift 3 关系

标签 ios swift core-data swift3

我有两个实体,设备和 MDM。 Device 有两个属性,asset_tag 和 location。 MDM 有两个属性,asset_tag 和 os。我正在尝试为每个 asset_tag 设备获取 asset_tag、操作系统和位置。我让 Xcode 创建了我的子类:

extension Device {

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

    @NSManaged public var asset_tag: String?
    @NSManaged public var location: String?
    @NSManaged public var devices: MDM?

}

extension MDM {

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

    @NSManaged public var asset_tag: String?
    @NSManaged public var os: String?
    @NSManaged public var mdms: Device?

}

我的获取请求如下:

var request = NSFetchRequest<NSFetchRequestResult>()
            request = Device.fetchRequest()
            request.returnsObjectsAsFaults = false
let results = try context.fetch(request) as! [Device]

不确定如何让 device.mdms.os 来获取特定设备的操作系统。

最佳答案

看起来你的人际关系名称倒过来了。现在,Device 有一个名为 devices 的关系,类型为 MDM,而 MDM 有一个名为 的关系类型为 Device 的 mdms。这意味着您将使用 device.devices.os 获取 Deviceos 的值,这可能不是您想要的

要修复它,您可能需要反转这些关系的名称——在 Device 中,将名称从 devices 更改为 mdms,在 MDM 中,将名称从 mdms 更改为 devices。一般来说,关系的名称应该描述它所关联的事物,而不是具有关系的事物。

关于ios - 核心数据 Swift 3 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44549945/

相关文章:

ios - SwiftUI 更新核心数据对象更改 View

ios - 根据表达式在 fetchrequest 中创建列

ios - Twilio 的 "Programmable Video"是如何工作的?

ios - NSImage 和 UIImage 给出了不同的 NSData 表示

ios - NSPredicate 与字符串完全匹配

swift - 单值元组作为 swift 中结构的最后一个成员

ios - 如何在 ios 的 Swift 语言中正确安排动画顺序?

ios - Spotify iOS SDK - 错误域 = com.spotify.ios-sdk 代码 = 500 "internal server error"

ios - 通过点击 X 按钮识别 AVPlayerViewController 何时关闭

iphone - 如何在 sqlite 中创建时间戳字段,以便正确初始化具有 NSDate 字段的核心数据对象?