我有两个实体,设备和 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
的 mdmsdevice.devices.os
获取 Device
的 os
的值,这可能不是您想要的
要修复它,您可能需要反转这些关系的名称——在 Device
中,将名称从 devices
更改为 mdms
,在 MDM
中,将名称从 mdms
更改为 devices
。一般来说,关系的名称应该描述它所关联的事物,而不是具有关系的事物。
关于ios - 核心数据 Swift 3 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44549945/