【发布时间】:2015-07-26 12:58:28
【问题描述】:
我正在尝试使用核心数据更改视图控制器的背景颜色,以便在重新打开应用程序时保存设置。我有一个名为Settings 的实体,其属性为backgroundColor,类型为Bool,如果为true,则视图将显示白色背景,如果false 为黑色。
但据我所知,我正在重新创建多个设置而不是引用一个。 如何在不使用数组的情况下只更改一个设置类? 目前我正在转换为一个数组,但它没有任何意义,并且在打开视图时出现错误。
数组索引超出范围
设置类
class Settings: NSManagedObject {
@NSManaged var backgroundColor: NSNumber
}
视图控制器
更新:
var settingsArray: [Settings]!
var setting: Settings!
var backgroundSetting: Bool = true
override func viewWillAppear(animated: Bool) {
backgroundSettings()
}
override func viewDidLoad() {
super.viewDidLoad()
backgroundSettings()
}
func backgroundSettings() {
var error: NSError?
let request = NSFetchRequest(entityName: "Settings")
self.settingsArray = moc?.executeFetchRequest(request, error: &error) as! [Settings]
if settingsArray.count == 1 {
setting = settingsArray[1]
} else if settingsArray.count <= 0 {
println("No settings in array")
}
if setting != nil {
if setting.backgroundColor == 1 {
backgroundSetting = true
} else if setting.backgroundColor == 0{
backgroundSetting = false
}
}
if backgroundSetting == true {
self.view.backgroundColor = UIColor.whiteColor()
} else if backgroundSetting == false {
self.view.backgroundColor = UIColor.darkGrayColor()
}
}
@IBAction func button(sender: AnyObject) {
if setting != nil {
if setting.backgroundColor == 1 {
setting.backgroundColor = 0
} else {
setting.backgroundColor = 1
}
var error: NSError?
moc?.save(&error)
} else {
println("No settings available")
var settings = NSEntityDescription.insertNewObjectForEntityForName("Settings", inManagedObjectContext: moc!) as! Settings
settings.backgroundColor = 1
var error: NSError?
moc?.save(&error)
}
backgroundSettings()
}
【问题讨论】: