我的NSManagedObject子类和核心数据有点问题。
所以,我已经创建了NSManagedObject的子类:
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)我使用 createAlarm
创建一个新的闹钟2)我使用 newAlarm.name ="新名称"
填写我的闹钟名称3)我尝试使用AlarmManager中的 addAlarm 将此对象保存在我的核心数据中
问题是:它确实将对象保存在核心数据中,但当我尝试显示警报时,名称仍然是"未命名"
提前感谢您的帮助
答案 0 :(得分:0)
我在显示AlarmsListView的函数中添加了NSManagedObjectContext回滚函数,我的问题解决了。