CoreData:警告:无法为实体'x'加载名为'x'的类。找不到类,而是使用默认的NSManagedObject

时间:2017-08-05 17:48:06

标签: ios swift core-data

WARNING in C:/Users/fisk/Documents/code/abc/~/@angular/compiler/@angular/compiler.es5.js
(Emitted value instead of an instance of Error) Cannot find source file 'compiler.es5.ts': Error: Can't resolve './compiler.es5.ts' in 'C:\Users\fisk\Documents\                                 code\abc\node_modules\@angular\compiler\@angular'
 @ C:/Users/fisk/Documents/code/abc/~/@angular/platform-browser-dynamic/@angular/platform-browser-dynamic.es5.js 7:0-72
 @ C:/Users/fisk/Documents/code/abc/src/main.ts
 @ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts
 webpack: Compiled with warnings.

上面是一个类,它可以作为一个可以存储为NSManagedObject的注释。

当我尝试使用:

初始化此类的对象时
class CustomPin : NSManagedObject, MKAnnotation {

    @NSManaged var lat: Double
    @NSManaged var lon: Double
    var title : String? = ""

    override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) {
       super.init(entity: entity, insertInto: context)
    }


    init(coordinate : CLLocationCoordinate2D , context : NSManagedObjectContext) {
        let entity = NSEntityDescription.entity(forEntityName: "CustomPin", in: context)
        super.init(entity: entity!, insertInto: context)
        self.lat = coordinate.latitude
        self.lon = coordinate.longitude


    }

    var coordinate  : CLLocationCoordinate2D {
        get {
           return CLLocationCoordinate2D(latitude: lat , longitude: lon)

        }
        set {
            self.lat = newValue.latitude
            self.lon = newValue.longitude
        }
    }
}

设置self.lat = coordinate.latitude:

时出现以下错误
let pin = CustomPin(coordinate: coordinate, context: moc)

据我所知,当你创建一个子类时你不使用xcdatamodel,因为你只是要重新声明该类?

导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:2)

  

据我所知,当您创建子类时,您不会使用xcdatamodel,因为您只是要重新声明该类?

这是不正确的。如果要使用具有Core Data的类,则数据模型必须包含相应的实体。如果没有,Core Data不知道它 - 你得到这个错误信息。

核心数据可能会也可能不会为实体创建自己的子类,具体取决于您配置数据模型的方式。如果您创建的这门课程符合您的需求,请确保数据模型说明使用" manual / none"用于子类生成。