Ios NSManagedObject保存在核心数据中,但属性错误
我的NSManagedObject子类和核心数据有点问题 因此,我创建了NSManagedObject的一个子类:Ios NSManagedObject保存在核心数据中,但属性错误,ios,swift,core-data,nsmanagedobject,Ios,Swift,Core Data,Nsmanagedobject,我的NSManagedObject子类和核心数据有点问题 因此,我创建了NSManagedObject的一个子类: import Foundation import CoreData @objc(Alarm) class Alarm: NSManagedObject { @NSManaged var name: String override init(entity: NSEntityDescription, insertIntoManagedObjectContext c
import Foundation
import CoreData
@objc(Alarm)
class Alarm: NSManagedObject {
@NSManaged var name: String
override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?) {
super.init(entity: entity, insertIntoManagedObjectContext: context)
name = "Unnamed"
}
}
我还创建了一个AlarmsManager类来与核心数据建立链接
import UIKit
import CoreData
var alarmsMgr: AlarmsManager = AlarmsManager()
class AlarmsManager: NSObject {
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext: NSManagedObjectContext
let entityDescription: NSEntityDescription
override init() {
managedContext = appDelegate.managedObjectContext!
entityDescription = NSEntityDescription.entityForName("Alarm", inManagedObjectContext: managedContext)!
}
func createAlarm() -> Alarm {
var newAlarm: Alarm = Alarm(entity: entityDescription, insertIntoManagedObjectContext: managedContext)
return newAlarm
}
func addAlarm(newAlarm: Alarm) -> Void {
var error: NSError?
println(newAlarm.name) // Display the good name
if !managedContext.save(&error) {
println("Error : \(error)")
}
println("Done...")
}
}
此外,这也是我加载警报的方式:
func loadAlarms() {
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
let fetchRequest = NSFetchRequest(entityName:"Alarm")
var error: NSError?
let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]?
if let results = fetchedResults {
alarmsArr = results
}
else {
println("Could not fetch \(error), \(error!.userInfo)")
}
}
因此:
1我使用CreateAlman创建新报警
2我使用newAlarm.name=New name之类的东西来填充我的闹钟的名称
3我尝试使用AlarmManager中的addAlarm将此对象保存在我的核心数据中
问题是:它确实将对象保存在核心数据中,但当我尝试显示报警时,名称仍然未命名
提前感谢您的帮助我在显示AlarmsListView的函数中添加了NSManagedObjectContext回滚函数,我的问题得到了解决。如果本地数据库中的属性正确,您能否使用sqlite查看器检入模拟器?并尝试获取报警数量-报警计数是否正确?您好,如果属性正确,最好查看数据库,我搜索了如何实现这一点,发现我必须转到~/Library/Application Support/iPhone Simulator/7.1/Applications,但随后我找不到我的应用程序到~/Library/Developer/CoreSimulator/Devices/…你在使用iOS 8吗?谢谢你提供的路径,我找到了好的文件,并用sqlitebrowser打开了它。有很多对象,当我刚刚添加报警时名称很好,但是当我停止应用程序,打开它并添加另一个报警时,名称变为未命名。编辑:是的,我使用iOS8