Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将Swift数组转换为NSData会导致错误_Ios_Arrays_Swift_Nsdata - Fatal编程技术网

Ios 将Swift数组转换为NSData会导致错误

Ios 将Swift数组转换为NSData会导致错误,ios,arrays,swift,nsdata,Ios,Arrays,Swift,Nsdata,我有两个数组 var questions: [Question]! var types: [[Type]]! 我正在尝试将这两个数组转换为NSData。我确实喜欢下面 let typesData = NSKeyedArchiver.archivedDataWithRootObject(types) let questionsData = NSKeyedArchiver.archivedDataWithRootObject(questions) 一旦点击typesData,应用程序就会崩溃并抛

我有两个数组

var questions: [Question]!
var types: [[Type]]!
我正在尝试将这两个数组转换为NSData。我确实喜欢下面

let typesData = NSKeyedArchiver.archivedDataWithRootObject(types)
let questionsData = NSKeyedArchiver.archivedDataWithRootObject(questions)
一旦点击typesData,应用程序就会崩溃并抛出如下错误:

*** NSForwarding: warning: object 0x15e5a4100 of class '(app Name).Type' does not implement methodSignatureForSelector: -- trouble ahead Unrecognized selector -[(app Name).Type replacementObjectForKeyedArchiver:]

我假设这会导致错误,因为这些数组具有自定义类型。有没有办法将这些数组转换为NSData?对于解决此问题的任何解决方案,我们将不胜感激。

对于swift,您需要在对象(问题、类型)类中实现此功能,如下所示:

class ItemObject:NSObject, NSCoding {
    var itemName = ""
    var itemCheck = false

    func encodeWithCoder(aCoder: NSCoder) {
        aCoder.encodeObject(itemName, forKey:"itemName")
        aCoder.encodeBool(itemCheck, forKey:"itemCheck")
    }


    required init (coder aDecoder: NSCoder) {
        self.itemName = aDecoder.decodeObjectForKey("itemName") as! String
        self.itemCheck = aDecoder.decodeBoolForKey("itemCheck")
    }

    override init() {
        super.init()
    }
}

这也是将自定义对象存储到
NSUserDefaults
CoreData

执行问题并键入implements initWithCoder:?似乎需要为它们执行NSCoding,然后只有您可以将其另存为NSData@Larme,它们没有initWithCoder函数。我需要实现它吗?@Tj3n,请提供更多信息