1

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

我的技术堆栈是:XCode 7.1 Beta 和 SWIFT。如果你们中的任何人都可以分享确切的代码来解决这个问题,不胜感激。提前致谢。

参数类型“[String?]”:不符合预期的类型'AnyObject'

@IBAction func saveArch(sender: AnyObject) {

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

}

谢谢

4

1 回答 1

3

数组不是 AnyObject 类型

你应该试试

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

您正在发送一个[]不符合的 swift 对象,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!)

这样,您只需将非nil元素添加到 contactArray 顺便说一下,Xcode 7.1 已经过时了。不再需要使用测试版

于 2015-11-03T21:33:08.260 回答