我正在使用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
如何解决这个问题的任何想法将不胜感激。谢谢!
答案 0 :(得分:2)
我怀疑你的模型没有链接实体"瞄准"与班级Sighting
。在模型编辑器中选择实体,然后在右侧的数据模型检查器面板中输入类名称:
请注意,在Swift中,类名必须包含模块(app)的名称。