簡體   English   中英

按下按鈕時如何在 NSDefaults 中保存布爾值?

[英]How Can I Save A Boolean In NSDefaults When A Button Is Pressed?

我編寫了一個晝夜按鈕主題。 如果用戶按下日期按鈕,則GlobalData.DayBool = trueGlobalData.NightBool = false 當他們按下夜間按鈕時, GlobalData.DayBool = falseGlobalData.NightBool = true 背景變為夜晚或白色,具體取決於哪個是真哪個是假。

假設用戶單擊了夜間按鈕。 GlobalData.NightBool = trueGlobalData.DayBool = false ,背景變為黑色。

我希望根據他們按下的按鈕來保存布爾值,這樣當他們關閉應用程序時,他們的背景將與他們選擇的相同。

//Day Button Pressed
for touch: AnyObject in touches {

    let location = touch.locationInNode(self)

    if dayButton.containsPoint(location) {

        for touch: AnyObject in touches {
            _ = touch.locationInNode(self)

            backgroundColor = GlobalData.dayColor
            GlobalData.nightBool = false
            GlobalData.dayBool = true
        }
    }
}

//Night Button Pressed
for touch: AnyObject in touches 
    let location = touch.locationInNode(self)

    if nightButton.containsPoint(location) {

        for touch: AnyObject in touches {
            _ = touch.locationInNode(self)

            backgroundColor = GlobalData.nightColor
            GlobalData.nightBool = true
            GlobalData.dayBool = false 
        }
    }
}

這是我的代碼,用於根據其中一個是真還是假切換背景:

//Day Background
if GlobalData.dayBool == true && GlobalData.nightBool == false {
    backgroundColor = GlobalData.dayColor
}

//Night Background
if GlobalData.nightBool == true && GlobalData.dayBool == false {
    backgroundColor = GlobalData.nightColor
}

如果您有任何問題,請在下面留下任何問題。 我真的需要幫助。

為您的按鈕創建一個IBAction並執行下面的 NSUserDefault 部分。

NS用戶默認

我總是喜歡將我的 NSUserDeafult 注冊為默認設置,很多人只是繼續第二步而不注冊。

在 AppDelgate.swift 中注冊 NSUserDefault

NSUserDefaults.standardUserDefaults().registerDefaults(["valueName": AnyObject])

將 Value 設置為您的 NSUserDefault,這取決於您存儲的數據類型,如果您確實注冊了,應該與您的注冊相匹配。 (下面的布爾數據類型示例)

NSUserDefaults.standardUserDefaults().setBool(true, forKey: "valueName") //Bool Data Type

確保在將值設置為 NSUserDefault 后同步,這樣它會立即更新,否則它會在有機會時更新。

NSUserDefaults.standardUserDefaults().synchronize()

接收值:這將接收布爾值,因為我們設置了布爾值並注冊了布爾值。

let Variable: Bool! = NSUserDefaults.standardUserDefaults().boolForKey("valueName")

在 AppDelegate / applicationDidFinishLaunching中注冊鍵/值對,假設默認情況下daytruenightfalse

let defaults = NSUserDefaults.standardUserDefaults()
let defaultValues = ["day" : true, "night" : false]
defaults.registerDefaults(defaultValues)

然后在任何你想要的地方讀取值(但總是在注冊它們之后):

let defaults = NSUserDefaults.standardUserDefaults()
GlobalData.dayBool = defaults.boolForKey("day")
GlobalData.nightBool = defaults.boolForKey("night")

考慮一下根本沒有可選項!

將值也保存在任何你喜歡的地方(最好在applicationWillTerminate)

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setBool(GlobalData.dayBool, forKey("day")
defaults.setBool(GlobalData.nightBool, forKey("night")
defaults.synchronize()

synchronize行可以省略。

由於day似乎總是與night相反,一個默認鍵可能就足夠了。

斯威夫特 5 的更新:

UserDefaults.standard.set(self?.email, forKey: "email")
UserDefaults.standard.set(self?.password, forKey: "password")
UserDefaults.standard.set(true, forKey: "alreadysignedup")

取回

if (UserDefaults.standard.bool(forKey: "alreadysignedup")){
            if let email1 = UserDefaults.standard.string(forKey: "email") {
                
                self.emaildefault = email1
                
                if let password1 = UserDefaults.standard.string(forKey: "password") {
                    
                    self.passworddefault = password1
                    signIn()
                }
            }
        }

我知道您不應該將用戶敏感數據存儲在 UserDefaults 中(為此使用鑰匙串),但這只是一個示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM