Bagaimana cara mendapatkan nilai/kunci yang dipilih dari PSMultiValueSpecifier?

di Settings.bundle saya, saya telah mendefinisikan PSMultiValueSpecifier. Sekarang saya ingin membaca nilai yang dipilih.

Beginilah cara saya membaca teks sederhana dari Settings.bundle kolom teks

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

Adakah yang tahu cara membaca nilai multi yang dipilih?


person Upvote    schedule 08.04.2011    source sumber
comment
maksud Anda seperti Anda ingin mengambil array atau dic?   -  person Ahmad Kayyali    schedule 08.04.2011
comment
Sekarang saya ingin mengetahui cara mendapatkan judul saat ini dan nilai kunci dari bidang yang dipilih   -  person Upvote    schedule 09.04.2011


Jawaban (3)


Menggunakan Key yang Anda tentukan untuk bidang ini di Settings.plist, Anda bisa mendapatkan nilai yang dipilih dengan:

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

Tidak ada cara untuk mendapatkan judul bidang yang dipilih melalui default pengguna. Anda harus membaca di Settings.plist secara langsung atau menyimpan judul dan nilai yang menyertainya di plist kedua di app bundle Anda untuk memudahkan akses.

person Ole Begemann    schedule 11.04.2011

Gunakan ini untuk mendapatkan nilai Anda:

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

Kunci adalah nama pengaturan yang ingin Anda dapatkan nilainya. Anda kemudian bisa mendapatkan nilai float atau int dari string jika perlu.

person quaertym    schedule 11.04.2011
comment
Itulah tepatnya yang dia lakukan pada pertanyaan awal - person sergey.syrotynin; 10.05.2019

Silakan periksa pertanyaan

Kode [[NSUserDefaults standardUserDefaults] stringForKey:@"key"] mengembalikan nil hingga data disimpan ke UserDefaults atau pengguna memilih opsi secara manual di pengaturan.

Saya sarankan menyimpan nilai default seperti yang dipilih saat aplikasi diluncurkan:

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)
}
person sergey.syrotynin    schedule 10.05.2019