以下是我保存数据的方法
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
let entity = NSEntityDescription.entityForName("Theme", inManagedObjectContext: managedContext)
let themeObj = NSManagedObject(entity: entity!, insertIntoManagedObjectContext:managedContext)
themeObj.setValue(num, forKey: "themeNumber")
var error: NSError?
if !managedContext.save(&error)
{
println("Could not save \(error), \(error?.userInfo)")
}
然后加载
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
let fetchRequest = NSFetchRequest(entityName:"Theme")
var resultArr = [NSManagedObject]()
var error: NSError?
let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]?
if let results = fetchedResults
{
resultArr = results
}
else
{
println("Could not fetch \(error), \(error!.userInfo)")
}
theme = resultArr[0].valueForKey("themeNumber") as Int
我的数据模型只是具有一个属性的实体主题,themeNumber是一个整数16.如果我从模拟器中删除了应用程序,它会加载正确的主题。但是,如果我改变它并再次运行它......没有。有什么想法吗?
答案 0 :(得分:1)
您不需要使用setValue。通常你会做这样的事情:
themeObj.themeNumber = num
因此,要解决您的问题,您需要实际更新核心数据对象。我刚刚意识到您可能没有通过属性设置themeNumber,因为您没有为您的实体设置NSManagedObject子类。我会写一下尝试编写修复程序,了解如何设置它。
theme = resultArr[0] as NSManagedObject
theme.setValue(num, forKey: "themeNumber")
if !managedContext.save(&error)
{
println("Could not save \(error), \(error?.userInfo)")
}
保存后,查看它是否具有您要查找的新值。