添加新记录的核心数据错误

core data errors adding new record

我正在使用 Xcode 6.1.1 和 Swift。该项目正在使用核心数据来保存 Sightings

import Foundation
import CoreData
@objc(Sighting)

class Sighting: NSManagedObject {
    @NSManaged var lat: Double
    @NSManaged var lng: Double
    @NSManaged var seen_at: NSDate
}

在 IBaction 中我创建了一个新的 Sighting

@IBAction func addSighting(sender: AnyObject) {
    let coordinate = locationManager.location.coordinate
    let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let managedContext = appDelegate.managedObjectContext!
    let sighting = NSEntityDescription.insertNewObjectForEntityForName("Sighting", inManagedObjectContext: managedContext) as Sighting

    sighting.lat = coordinate.latitude
    sighting.lng = coordinate.longitude
    ...
}

在线 "let sighting =" 我收到错误 swift_dynamicCastClassUnconditional。有什么想法吗?

将行替换为

    let entityDescripition = NSEntityDescription.entityForName("Sighting", inManagedObjectContext: managedContext)
    let sighting = Sighting(entity: entityDescripition!, insertIntoManagedObjectContext: managedContext)

似乎解决了这个问题,但它只是导致下一行 "sighting.lat =" 给出错误 EXC_BAD_ACCESS > objc_msgSend

coordinate.latitude 正确返回 CLLocationDegrees

任何有关如何解决此问题的想法都将不胜感激。谢谢!

我怀疑您的模型没有 link 实体 "Sighting" 和 class Sighting。 Select模型编辑器中的实体,在右侧的数据模型检查面板中输入class名称:

请注意,在 Swift 中,class 名称必须包含您的模块(应用程序)的名称。