Ios 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

我的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我使用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