gpt4 book ai didi

ios - 使用用户默认值保存数据

转载 作者:行者123 更新时间:2023-11-28 16:09:07 26 4
gpt4 key购买 nike

我在我的应用程序中制作了一个功能,允许您将音乐静音,我在那里放了一个开关,这样您就可以在打开和关闭之间切换。但是,该开关在应用程序中工作正常,当我关闭 vie Controller 并将其拉回时,它仍会显示它是如何离开的,但是当您关闭应用程序并重新打开它时,开关看起来好像关闭了但它仍然播放音乐。这是我的代码,我会附上一张照片。

import Foundation
import UIKit
import SpriteKit
import AVFoundation




var bombSoundEffect: AVAudioPlayer!
var Ghost = SKSpriteNode()

class SecondViewController: UIViewController {

var sw = false




@IBOutlet var mySwitch: UISwitch!

@IBAction func switchpressed(_ sender: AnyObject) {

let defaults = UserDefaults.standard

if mySwitch.isOn{
defaults.set(true, forKey: "SwitchState")

if bombSoundEffect != nil {
bombSoundEffect.stop()
bombSoundEffect = nil

}

}
else{
defaults.set(false, forKey: "SwitchState")

let path = Bundle.main.path(forResource: "newmusic.wav", ofType:nil)!
let url = URL(fileURLWithPath: path)


do {
let sound = try AVAudioPlayer(contentsOf: url)
bombSoundEffect = sound
sound.numberOfLoops = -1
sound.play()
} catch {
// couldn't load file :(
}

}


}


override func viewDidLoad() {
super.viewDidLoad()

super.viewDidLoad()

let defaults = UserDefaults.standard

if (defaults.object(forKey: "SwitchState") != nil) {
mySwitch.isOn = defaults.bool(forKey: "SwitchState")


}
}


override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}


}

这是图片 enter image description here如果你不明白我上面说的,请提问。

最佳答案

据我从您的代码中了解到,您没有正确检查用户默认值。在您的 viewDidLoad 中,您必须检查您的 user defaults 的 bool 值是否设置为 true。

override func viewDidLoad() {
super.viewDidLoad()
let defaults = UserDefaults.standard

//check bool Value is set to true or not

if defaults.bool(forKey: "SwitchState") == true {
mySwitch.isOn = defaults.bool(forKey: "SwitchState")

} else {
print("false")

}
}

请检查此代码。希望对您有所帮助。

关于ios - 使用用户默认值保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39813643/

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