添加新记录的核心数据错误
Posted
技术标签:
【中文标题】添加新记录的核心数据错误【英文标题】:core data errors adding new record 【发布时间】:2015-01-11 04:15:47 【问题描述】:我将 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
...
在“让瞄准=”行我收到错误 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
任何有关如何解决此问题的想法都将不胜感激。谢谢!
【问题讨论】:
是否将课程标记为公开:public class Sighting: NSManagedObject
帮助?
【参考方案1】:
我怀疑您的模型没有将实体“Sighting”与 Sighting
类链接。在模型编辑器中选择实体,在右侧的数据模型检查器面板中输入类名:
请注意,在 Swift 中,类名必须包含您的模块(应用程序)的名称。
【讨论】:
太棒了。我在类输入中没有类名。添加没有应用程序名称的“Sighting”似乎工作正常。谢谢!以上是关于添加新记录的核心数据错误的主要内容,如果未能解决你的问题,请参考以下文章
添加然后删除索引后核心数据错误“错误配置的实体:在复合索引属性中...不是有效属性”
核心数据触发错误将对象添加到 NSMutableArray?
核心数据异常:向实体添加新属性后出现 SQLite“没有这样的列”错误