让我澄清一下。
我有一个WeatherWrapper类,它子类化NSManagedObject并符合Codable协议。通常,我想解码WeatherWrapper,然后转到CurrentWeather来访问其属性,例如温度,摘要和时间。
我的问题是如何解码currentWeather?到目前为止,我只是这样做了,只是不认为那是正确的。原因我不断收到解码错误,但如果忽略该错误,则至少可以解码WeatherWrapper。
到目前为止,这是我所拥有的, CurrentWeather 类型还具有一个类,该类继承了 NSManagedObject ,并符合 Codable 协议。
@objc(WeatherWrapper)
public class WeatherWrapper: NSManagedObject, Codable {
@NSManaged public var latitude: Double
@NSManaged public var longitude: Double
@NSManaged public var timezone: String
@NSManaged public var currentWeather: CurrentWeather
enum CodingKeys: String, CodingKey {
case latitude
case longitude
case timezone
case currentWeather = "currently"
}
public required convenience init(from decoder: Decoder) throws {
guard
let contextUserInfoKey = CodingUserInfoKey.context,
let managedObjectContext = decoder.userInfo[contextUserInfoKey] as? NSManagedObjectContext,
let entity = NSEntityDescription.entity(forEntityName: "WeatherWrapper", in: managedObjectContext) else {
fatalError("Could not retrieve context")
}
self.init(entity: entity, insertInto: managedObjectContext)
let container = try decoder.container(keyedBy: CodingKeys.self)
latitude = try container.decode(Double.self, forKey: .latitude)
longitude = try container.decode(Double.self, forKey: .longitude)
timezone = try container.decode(String.self, forKey: .timezone)
currentWeather = try container.decode(CurrentWeather.self, forKey: .currentWeather)
}
}
我是否更改了Weather.xcdatamodelId中的某些内容,因为我有两个实体, WeatherWrapper 和 CurrentWeather 。