我正在尝试写入档案并收到此错误。
我的技术堆栈是:XCode 7.1 Beta和SWIFT。如果您有任何人可以共享确切代码来解决此问题,请相信。提前谢谢。
参数类型" [字符串?]" :不符合预期类型' AnyObject'
@IBAction func saveArch(sender: AnyObject) {
var contactArray = [name.text, address.text, phone.text]
NSKeyedArchiver.archiveRootObject(contactArray,
toFile: dataFilePath!)
}
谢谢
答案 0 :(得分:3)
你应该试试
NSKeyedArchiver.archiveRootObject(NSArray(array: contactArray),
toFile: dataFilePath!)
您正在发送一个不符合[]
的快速AnyObject
对象,因为数组和对象在swift中是不同的东西。
您还有选项问题:您的.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已经出局了。无需再使用测试版