iOS SWIFT - 文件存档 - 参数类型" [String?]" :不符合预期的类型' AnyObject'

时间:2015-11-03 21:28:41

标签: ios swift xcode7 nskeyedarchiver nskeyedunarchiver

我正在尝试写入档案并收到此错误。

我的技术堆栈是:XCode 7.1 Beta和SWIFT。如果您有任何人可以共享确切代码来解决此问题,请相信。提前谢谢。

参数类型" [字符串?]" :不符合预期类型' AnyObject'

@IBAction func saveArch(sender: AnyObject) {

    var contactArray = [name.text, address.text, phone.text]
    NSKeyedArchiver.archiveRootObject(contactArray,
        toFile: dataFilePath!)

}

谢谢

1 个答案:

答案 0 :(得分:3)

数组不是AnyObject

类型

你应该试试

NSKeyedArchiver.archiveRootObject(NSArray(array: contactArray),
    toFile: dataFilePath!)

您正在发送一个不符合[]的快速AnyObject对象,因为数组和对象在swift中是不同的东西。

NSArray不能包含选项

您还有选项问题:您的.text中的一个或全部是String类型? (因此它可能是零)。

如果你是肯定的,这个字段都没有,你可以使用

var contactArray = [name.text!, address.text!, phone.text!]

或者更改声明。

如果您不确定,您应该执行类似

的操作
var contactArray = [String]()

for element in [name.text, address.text, phone.text] where element != nil {
    array.append(element!)
}
NSKeyedArchiver.archiveRootObject(NSArray(array: contactArray),
    toFile: dataFilePath!)

这样,您只需向contactArray添加非nil元素 顺便说一句,Xcode 7.1已经出局了。无需再使用测试版