मेरे पास NSUserDefault शब्दकोश है। कुंजियों में से एक का मान [Int] है। मैं यह पता लगाना चाहता हूं कि उस एम्बेडेड सरणी में Ints को कैसे जोड़ा जाए।

var dictionary = ["keyOne" : [1,2,3,4,5]]
defaults.setObject(dictionary, forKey: "defaultDictionary")

वर्तमान में मैं जो कर रहा हूं वह शब्दकोश को एक चर में सहेज रहा है, नए शब्दकोश चर से एक चर सरणी बना रहा है और फिर इसे जोड़ रहा है। फिर मैं डिक्शनरी को नए ऐरे से अपडेट कर रहा हूं और डिक्शनरी में वापस डिक्शनरी में भेज रहा हूं।

क्या किसी को पता है कि सभी मध्य कार्य करने के बिना सरणी को संलग्न करने का एक सीधा तरीका है?

0
Mark Onsager 20 नवम्बर 2015, 21:57

3 जवाब

सबसे बढ़िया उत्तर

आप इसे इस तरह से कर सकते हैं:

func saveArray(valueArray: [AnyObject], key: String) {
    let dataToSave = NSKeyedArchiver.archivedDataWithRootObject(valueArray)
    NSUserDefaults.standardUserDefaults().setObject(dataToSave, forKey: key)
}
0
Alexey Pichukov 20 नवम्बर 2015, 19:17

आप एक संगणित संपत्ति बना सकते हैं और इसे उपयोगकर्ता की चूक के लिए स्वचालित रूप से सहेजने के लिए गेटटर / सेटर को परिभाषित कर सकते हैं। आपको [स्ट्रिंग: [Int]] से [String: AnyObject] को NSUSerDefaults में सहेजने में सक्षम होने की आवश्यकता होगी:

var defaultDictionary:[String:[Int]] {
    get {
        return NSUserDefaults().dictionaryForKey("defaultDictionary") as? [String:[Int]] ??  [:]
    }
    set {
        NSUserDefaults().setObject(newValue as [String:AnyObject], forKey: "defaultDictionary")
    }
}


print(defaultDictionary["keyOne"]?.description ?? "")  // [1, 2, 3, 4, 5]
print(defaultDictionary["keyTwo"]?.description ?? "")  // [1, 2, 3]

defaultDictionary["keyOne"]?.append(6)
defaultDictionary["keyTwo"]?.append(4)

print(defaultDictionary["keyOne"]?.description ?? "")  // [1, 2, 3, 4, 5, 6]
print(defaultDictionary["keyTwo"]?.description ?? "")  // [1, 2, 3, 4]
1
Leo Dabus 21 नवम्बर 2015, 05:13

आप NSUserDefaults से केवल वस्तुओं को पढ़ और लिख सकते हैं। यदि आप इसका उपयोग करते हैं तो अक्सर कुछ तरीके लिखते हैं जैसे:

func updateDefaultsWithArray(array: [Int]) {
    let dictionary = ["keyOne" : array]
    let defaults = NSUserDefaults()
    defaults.setObject(dictionary, forKey: "defaultDictionary")
}
0
zuziaka 20 नवम्बर 2015, 19:16