核心数据错误增加新记录

时间:2015-01-11 04:15:47

标签: ios swift core-data xcode6

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

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

如何解决这个问题的任何想法将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

我怀疑你的模型没有链接实体"瞄准"与班级Sighting。在模型编辑器中选择实体,然后在右侧的数据模型检查器面板中输入类名称:

screenshot

请注意,在Swift中,类名必须包含模块(app)的名称。