【问题标题】:How do I save settings using NSUserdefaults如何使用 NSUserdefaults 保存设置
【发布时间】:2015-12-15 22:29:41
【问题描述】:

我正在制作一个小费计算器,并且要求有一个与计算器一起使用的设置页面。在计算器中,当每个选项被选中时,由分段控件实现三个选项,即小费的值和总变化的值。在我的设置选项卡中,我希望能够让用户保存他们的默认小费百分比。我知道我需要使用 NSUserdefaults,但是我不知道如何使用两个不同的页面(或者一个页面)来做到这一点。如果我想要实现的目标不清楚,请告诉我我已尽力彻底解释。

这是视图控制器的代码:

@IBAction func onEditingChanged(sender: AnyObject) {

    var tipPercentages = [0.18, 0.2, 0.22]

    let tipPercentage = tipPercentages[tipControl.selectedSegmentIndex]

    let billAmount = billField.text!._bridgeToObjectiveC().doubleValue

    let billAmt = billAmount

    let tip = billAmt * tipPercentage

    let total = billAmt + tip

    tipLabel.text = String(format:"$%.2f", tip)

    totalLabel.text = String(format:"$%.2f", total)

}

这是我的 settingsViewController:

import UIKit

class SettingsViewController: UIViewController {

@IBOutlet weak var defaultTipControl: UISegmentedControl!



@IBAction func actDefaultTipCont(sender: AnyObject) {

    var tipPercentages = [0.18, 0.2, 0.22]

    var tipPercentage = [defaultTipControl.selectedSegmentIndex]

    let defaults = NSUserDefaults.standardUserDefaults()

    defaults.setObject(tipPercentage, forKey: "tippingDefault")

    defaults.setInteger(123, forKey: "tippingInteger")

    defaults.synchronize()

}

我刚刚弄乱了 settingsViewController 试图让它工作,它可能都必须重做。以下是两个不同页面的视图图片:

Entry View

Settings Page

提前感谢您的帮助!

【问题讨论】:

    标签: ios storage nsuserdefaults


    【解决方案1】:

    要保存然后检索数据,您需要执行以下操作:

    let valueToSave = tipAmount;
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject(valueToSave, forKey: "tipAmount")
    

    然后检索它并在您的主控件上使用它(例如)这样做:

    let defaults = NSUserDefaults.standardUserDefaults()
    tipAmount = defaults.objectForKey("tipAmount")
    

    valueForKey 方法返回您之前保存在该键中的任何内容

    NSUserdefaults 基本上只是一个字典,会在不同的启动过程中持续存在,因此只需检查您是否为特定键保存了值以访问它

    【讨论】:

    • 其实 valueForKey 是一个 KVO 方法。你想要objectForKey,或者像doubleForKey这样的辅助方法之一
    • 我应该将 valueToSave 设置为等于我在 settingsViewController 中定义的 tipPercentage 吗?当我想检索它时,我应该把它放在我的主控件的哪个位置?在 viewDidLoad() 方法中?
    • 是的,所以您的tipPercentage 将等于defaults.objectForKey("")。您可以选择要保存它的任何键,只要您使用该键检索它,该值就会在那里。我会在他们设置它时保存这个值,并在 viewdidload 期间加载它,或者在他们需要查看或使用它时加载它
    • 太好了,谢谢你,我会尝试实现这一点。如果我有更多麻烦,我会在这里发表评论。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多