【问题标题】:How to get the selected value/key from PSMultiValueSpecifier?如何从 PSMultiValueSpecifier 中获取选定的值/键?
【发布时间】:2023-03-26 21:02:01
【问题描述】:

在我的 Settings.bundle 中,我定义了一个 PSMultiValueSpecifier。现在我想读取 selected 值。

这就是我从Settings.bundle 文本字段中读取简单文本的方式

[[NSUserDefaults standardUserDefaults] stringForKey:@"name_preference"];

知道如何读取选定的多值吗?

【问题讨论】:

  • 您的意思是要检索数组或 dic 吗?
  • 我现在想知道如何获取所选字段的当前标题和键值

标签: objective-c xcode settings.bundle


【解决方案1】:

使用您在 Settings.plist 中为此字段指定的 Key,您可以通过以下方式获取所选值:

// Assumption: myKey is a string that's equal to the Key in Settings.plist
[[NSUserDefaults standardUserDefaults] objectForKey:myKey];

无法通过用户默认设置获取所选字段的标题。您必须直接阅读 Settings.plist 或将标题及其随附值存储在应用程序包中的第二个 plist 中以便于访问。

【讨论】:

    【解决方案2】:

    用它来获得你的价值:

    NSString* value = [[NSUserDefaults standardUserDefaults] stringForKey:@"key"] 
    

    Key 是您要获取其值的设置的名称。然后,您可以根据需要获取字符串的 float 或 int 值。

    【讨论】:

    • 这正是他在原始问题中所做的
    【解决方案3】:

    请查看question

    代码[[NSUserDefaults standardUserDefaults] stringForKey:@"key"] 返回nil,直到数据保存到UserDefaults 或用户在设置中手动选择选项。

    我建议在应用启动时保存默认值:

    static func registerSettingsDefaults()
    {
        // Get Settings bundle path
        guard let settingsBundle = Bundle.main.path(forResource: "Settings", ofType: "bundle") else {
            assertionFailure("Could not find Settings bundle")
            return
        }
    
        // Get settings plist
        let settings = NSDictionary(contentsOfFile: settingsBundle + "/Root.plist")
    
        // Get preferences dictionary
        guard let preferences = settings?.object(forKey: "PreferenceSpecifiers") as? [[String: Any]] else {
            assertionFailure("Could not find preferences")
            return
        }
    
        // Filter out default values from Settings
        var defaultsToRegister: [String: Any] = [:]
        preferences.forEach { dictionary in
            if let key = dictionary["Key"] as? String {
                defaultsToRegister[key] = dictionary["DefaultValue"] as? String
            }
        }
    
        UserDefaults.standard.register(defaults: defaultsToRegister)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-28
      • 2021-07-13
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      相关资源
      最近更新 更多