iOS SWIFT - 文件存档 - 参数类型“[String?]”:不符合预期类型“AnyObject”
iOS SWIFT - File Archive - Argument Type "[String?]" : does not conform to expected type'AnyObject'
我正在尝试写入存档并收到此错误。
我的技术堆栈是: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!)
}
谢谢
数组不是 AnyObject 类型
你应该试试
NSKeyedArchiver.archiveRootObject(NSArray(array: contactArray),
toFile: dataFilePath!)
您正在发送不符合 AnyObject
的 swift []
对象,因为数组和对象在 swift.
中是不同的东西
NSArray 不能包含可选项
您还遇到了可选值的问题:您的 .text
中的一个或全部是 String 类型? (因此它可能为零)。
如果你肯定none这个字段是nil,你可以用
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 已经出来了。无需再使用测试版
我正在尝试写入存档并收到此错误。
我的技术堆栈是: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!)
}
谢谢
数组不是 AnyObject 类型
你应该试试
NSKeyedArchiver.archiveRootObject(NSArray(array: contactArray),
toFile: dataFilePath!)
您正在发送不符合 AnyObject
的 swift []
对象,因为数组和对象在 swift.
NSArray 不能包含可选项
您还遇到了可选值的问题:您的 .text
中的一个或全部是 String 类型? (因此它可能为零)。
如果你肯定none这个字段是nil,你可以用
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 已经出来了。无需再使用测试版