gpt4 book ai didi

ios - 带有 NSManagedObject 的 EVReflection 崩溃/不工作

转载 作者:行者123 更新时间:2023-11-28 10:55:55 24 4
gpt4 key购买 nike

hI:我一直在使用 EVReflection 使我们的网络层完全 Restful ,我必须说:真棒!感谢@evermeer 为这个图书馆。你可以在这里得到它:https://github.com/evermeer/EVReflection

现在,问题:

下一步是将这些对象直接放入核心数据中。这是有问题的类(class)之一

//这是文档声明的具有 EVReflectable 扩展的对象:

import Foundation
import CoreData
import EVReflection

public class NGTripSummary: NSManagedObject { }

extension NGTripSummary: EVReflectable { }

//和 HERE 是对象属性:

//NGTripSummary+CoreDataProperties.swift

import Foundation
import CoreData

extension NGTripSummary {

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

@NSManaged public var carId: Int64
@NSManaged public var citiesVisited: NSObject?
@NSManaged public var cost: Double
@NSManaged public var distance: Double
@NSManaged public var globalStartDate: NSDate?
@NSManaged public var globalEndDate: NSDate?
@NSManaged public var kpl: Double
@NSManaged public var litres: Double
@NSManaged public var routeLocations: NSObject?
@NSManaged public var sessionId: Int64
@NSManaged public var localStartDate: NSDate?
@NSManaged public var localEndDate: NSDate?
@NSManaged public var duration: Int64
@NSManaged public var speed: Double
@NSManaged public var _id: Int64
@NSManaged public var sessionUuid: String?
@NSManaged public var tripUuid: String?

}

//。这是代表演示对象的 JSON 字符串:

let tripData = "{\"id\":26105240,\"userId\":25796277,\"carId\":25817551,\"vehicleId\":57812351,\"sessionUuid\":\"53324259-aa69-41c8-8f9e-c62bdb70f165\",\"tripUuid\":\"afdd8f55-6d14-4cf9-bd9f-5b6da47aaf93\",\"localStartDate\":1487170622490,\"localEndDate\":1487178323654,\"globalStartDate\":1487163422490,\"globalEndDate\":1487171123654,\"routeLocations\":null,\"litres\":24.7699,\"kpl\":0.0772,\"cost\":153.3258,\"distance\":1.9132,\"duration\":491.958,\"speed\":14.0}"

//这里是我试图用来创建这个模拟对象的方法:

func makeMockData() {
let singleTrip = NGTripSummary(json: tripData)
print("Single Trip: \(singleTrip)")
}

//现在:创建对象时,崩溃发生在此处 @class EVReflection:

        // Call your own object validators that comply to the format: validate<Key>:Error:
do {
var setValue: AnyObject? = value as AnyObject?
/* LINE 923: CRASH HAPPENS HERE -> */ try anyObject.validateValue(&setValue, forKey: key)
anyObject.setValue(setValue, forKey: key)
} catch _ {
(anyObject as? EVReflectable)?.addStatusMessage(.InvalidValue, message: "Not a valid value for object `\(NSStringFromClass(type(of: (anyObject as AnyObject))))`, type `\(type)`, key `\(key)`, value `\(value)`")
print("INFO: Not a valid value for object `\(NSStringFromClass(type(of: (anyObject as AnyObject))))`, type `\(type)`, key `\(key)`, value `\(value)`")
}

/////////////////崩溃原因/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////和

[错误] 错误:CoreData:错误:无法在 NSManagedObject 类“NGTripSummary”上调用指定的初始值设定项CoreData:错误:CoreData:错误:无法在 NSManagedObject 类“NGTripSummary”上调用指定的初始值设定项

///////////////////////////////////////////////

-> 任何人,请帮助 :-0

最佳答案

错误消息描述了确切的问题。您似乎正在使用这行代码创建 NGTripSummary 的实例:

let singleTrip = NGTripSummary(json: tripData)

但是 NGTripSummaryNSManagedObject 的子类,您永远不会调用 NSManagedObject 的指定初始化程序。这是必需的。您必须在 NSManagedObject 上调用 init(entity:insertInto:),或者在 上使用工厂方法 insertNewObject(forEntityName:into:) >NSEntityDescription 以获取有效的托管对象。否则,您会收到此特定错误并且您的应用程序会崩溃。

如果您需要使用tripData 创建实例,您可以这样做,但您还需要提供托管对象上下文和实体描述。您可以在您的类上使用便利初始化程序来做到这一点,它会在初始化过程中调用指定的初始化程序。

关于ios - 带有 NSManagedObject 的 EVReflection 崩溃/不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43591762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com