我有两个实体Device和MDM。设备有两个属性,asset_tag和location。 MDM有两个属性,asset_tag和os。我正在尝试为每个asset_tag设备获取asset_tag,os和位置。我有Xcode中创建我的子类:核心数据Swift 3关系
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:Device'(单数),一对多关系是'devices:NSSet'(复数)。 – vadian
我扭转了我的关系,并让Xcode重拍我的子类,所以现在看起来像这样:'@NSManaged public var devices:Device' – Martheli
'devices'(复数)意味着**很多**设备。相应的类型是'NSSet'。否则(**一个**设备,单数)使用'device'(无尾随's')。 – vadian