Как получить выбранное значение / ключ из PSMultiValueSpecifier? - PullRequest
0 голосов
/ 08 апреля 2011

в моем Settings.bundle Я определил PSMultiValueSpecifier.Теперь я хочу прочитать значение selected .

Вот так я читаю простой текст из Settings.bundle текстового поля

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

Любая идея, как читатьвыбранное мульти значение?

Ответы [ 3 ]

3 голосов
/ 11 апреля 2011

Используйте это, чтобы получить ваше значение:

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

Ключ - это название параметра, значение которого вы хотите получить. Затем вы можете получить значение типа float или int для строки.

3 голосов
/ 11 апреля 2011

Используя Key, который вы указали для этого поля в вашем Settings.plist, вы можете получить выбранное значение с помощью:

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

Невозможно получить название выбранного полячерез пользовательские настройки по умолчанию.Вам нужно будет прочитать непосредственно в файле Settings.plist или сохранить заголовки и сопровождающие их значения во втором списке в вашем комплекте приложений для быстрого доступа.

0 голосов
/ 10 мая 2019

Пожалуйста, проверьте вопрос

Код [[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)
}
...