gpt4 book ai didi

ios - 如何使用 Core Data 更改 View.backgroundColor

转载 作者:行者123 更新时间:2023-11-30 14:12:19 25 4
gpt4 key购买 nike

我正在尝试使用核心数据更改 View Controller 的背景颜色,以便在重新打开应用程序时保存设置。我有一个名为 Settings 的实体,其属性为 Bool 类型的 backgroundColor,如果为 true,则 View 将显示白色背景,如果为 false,则显示黑色。

但据我所知,我正在重新创建多个设置,而不是引用一个。 如何在不使用数组的情况下仅更改一个设置类? 目前我正在转换为数组,但它没有意义,并且在打开 View 时出现错误。

Array index out of range

设置类

class Settings: NSManagedObject {

@NSManaged var backgroundColor: NSNumber

}

View Controller

更新:

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()
}

最佳答案

您应该创建一个检查来查看背景颜色的对象是否已存在,如果存在,则编辑该对象而不是创建新对象,如果不存在,则创建并保存一个新对象。

您可以声明一个可选属性,例如

var existingSetting: Setting?

然后在您的初始获取中,尝试分配它

self.settings = moc?.executeFetchRequest(request, error: &error) as! [Settings]

if let thisSetting = settings?[0] {

existingSetting = thisSetting

}


if existingSetting != nil {

// Set your color based on true / false
} else {
// perform a default action
}

然后在你的行动中

// Set your context

if existingSetting != nil {

//Update this setting object

existingSetting = true or false
// Save the context
} else {
// Create a new setting
// Save the context
}

关于ios - 如何使用 Core Data 更改 View.backgroundColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31637226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com