Problem
我是IOS开发的新手,并且一直在努力使用Core Data . 我正在尝试使用开关创建设置页面 . 我需要记住这个开关是打开还是关闭 . 我创建了一个核心数据应用程序,并设法弄清楚如何将开关的值保存到属性 . 下面的代码执行此操作,我无法弄清楚如何将开关的保存值恢复为开或关 . 我该怎么办?谢谢!
Picture of Core Data
Code:
import UIKit
import CoreData
class preferencesStuff: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var request = NSFetchRequest(entityName: "Settings")
request.returnsObjectsAsFaults = false;
var results:NSArray = context.executeFetchRequest(request, error: nil)!
if(results.count > 0){
if results[results.count-1] as NSObject == 1 {
println("ON")
}
}else{
println("NO RESULTS")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBOutlet weak var fractSwitchValue: UISwitch!
@IBAction func fractSwitch(sender: AnyObject) {
if fractSwitchValue.on == true {
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var newSetting = NSEntityDescription.insertNewObjectForEntityForName("Settings", inManagedObjectContext: context) as NSManagedObject
newSetting.setValue(true, forKey: "fractionOnOff")
context.save(nil)
//println(newSetting)
}
else {
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var newSetting = NSEntityDescription.insertNewObjectForEntityForName("Settings", inManagedObjectContext: context) as NSManagedObject
newSetting.setValue(false, forKey: "fractionOnOff")
context.save(nil)
//println(newSetting)
}
}
}
2 回答
我刚刚用CoreData做了你的例子 . 我碰巧存储了NSString而不是Bool . 它没有优化,但它应该让你去 .
我会在这种情况下使用NSUserDefaults . 存储用户首选项时,它比Core Data更容易使用 . 例如,您将使用存储属性
并使用 . 检索它