का उपयोग कर स्विफ्ट एन्कोड टुपल NSCoding
का उपयोग कर एक टुपल स्टोर करना संभव है? मेरे पास ((UInt8, UInt8), (UInt8, UInt8))
जैसे टुपल हैं। लेकिन aCoder.encodeObject(myTuple)
काम नहीं करता है। क्या मुझे tuple को NSData
में परिवर्तित करना है या यह बिल्कुल संभव नहीं है? किसी भी मदद के लिए धन्यवादएनएससीओडी
8
A
उत्तर
5
ट्यूपल को एन्कोड नहीं किया जा सकता क्योंकि यह कक्षा नहीं है, लेकिन एक दृष्टिकोण अलग-अलग टुपल के प्रत्येक घटक को एन्कोड करना है और फिर डीकोडिंग पर आप प्रत्येक घटक को डीकोड करते हैं और फिर टुपल के मान को टुपल पर सेट करते हैं डीकोडेड सामग्री से बनाया गया।
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let obj = SomeClass()
obj.foo = (6,5)
let data = NSKeyedArchiver.archivedDataWithRootObject(obj)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "books")
if let data = NSUserDefaults.standardUserDefaults().objectForKey("books") as? NSData {
let o = NSKeyedUnarchiver.unarchiveObjectWithData(data) as SomeClass
println(o.foo) // (Optional(6), Optional(5))
}
}
}
class SomeClass: NSObject, NSCoding {
var foo: (x: Int?, y: Int?)!
required convenience init(coder decoder: NSCoder) {
self.init()
let x = decoder.decodeObjectForKey("myTupleX") as Int?
let y = decoder.decodeObjectForKey("myTupleY") as Int?
foo = (x,y)
}
func encodeWithCoder(coder: NSCoder) {
coder.encodeObject(foo.x, forKey: "myTupleX")
coder.encodeObject(foo.y, forKey: "myTupleY")
}
}
0
मैं बस अपना कोड है जो इयान के कोड के आधार पर कुछ अपडेट किया है साझा करना चाहते हैं। मैंने तत्वों की श्रेणी/उपश्रेणी की सूची बनाने के लिए मेरा उपयोग किया।
class catSubcatOption: NSObject, NSCoding {
var element: (x: String, y: String)!
override init() {
}
public func encode(with aCoder: NSCoder) {
aCoder.encode(element.category, forKey: "category")
aCoder.encode(element.subcategory, forKey: "subcategory")
}
required init(coder decoder: NSCoder) {
let category = decoder.decodeObject(forKey: "category") as! String
let subcategory = decoder.decodeObject(forKey:"subcategory") as! String
element = (category,subcategory)
} }
संबंधित मुद्दे
- 1. एनएससीओडी
- 2. NSUserDefaults बनाम एनएससीओडी
- 3. यूनिट परीक्षण एनएससीओडी कैसे करें?
- 4. एनएससीओडी-अनुपालन होने का क्या अर्थ है?
- 5. एक्सटेंशन के रूप में एनएससीओडी जोड़ना
- 6. एनएससीओडी: प्राचीन प्रकार के लिए एन्कोडर और डिकोडर
- 7. जेनेरिक एनएससीओडी कार्यान्वयन के लिए उद्देश्य-सी प्रतिबिंब
- 8. प्रोटोकॉल 'एनएससीओडी' के अनुरूप नहीं है - स्विफ्ट 3
- 9. एनएससीओडी के साथ डीकोडिंग: क्या कुंजी कुंजी के लिए मौजूद है?
- 10. क्या एनएससीओडी लागू करने वाली ऑब्जेक्ट को उप-वर्गीकृत करते समय [सुपर एन्कोडविथकोडर] को कॉल करना आवश्यक है?
- 11. आईफोन पर जेसन डेटा संग्रहीत करना: जेसन स्ट्रिंग को बचाने के रूप में यह वीएस जेसन से ऑब्जेक्ट बनाता है और एनएससीओडी + एनएसकेएड आर्चिवर
- 12. कस्टम वर्ग
- 13. इंक की एक सी शैली सरणी एन्कोडिंग
- 14. आईफोन - दस्तावेज क्यों कहते हैं UIImageView एनएससीओडी अनुपालन है? डेवलपर क्या दिनचर्या के अंदर चला जाता है के बारे में परेशान करने के लिए (जब तक कि एक NSCoding शिकायत वर्ग के लिए मेरा विचार पूरी तरह से कर रहे हैं बिना (कम से कम मैं तो जब तक हाल ही में सोचा):
- 15. एनएससीओडर बनाम एनएस डिक्शनरी, आप कब उपयोग करते हैं?
- 16. एन्कोडिंग करते समय एनएसएआरएआरई ऑब्जेक्ट का क्या होता है?
- 17. डिस्क पर ऑब्जेक्ट्स के एनएसएमयूटेबलएरे को सहेजें/लिखें?
- 18. NSUserDefaults कस्टम ऑब्जेक्ट - संपत्ति सूची प्रारूप के लिए अमान्य: 200 (संपत्ति सूचियों में 'CFType' प्रकार की वस्तुएं नहीं हो सकती हैं)