I am trying to write into an Archive and getting this error .
My tech stack is : XCode 7.1 Beta and SWIFT .Appreciate if any of you could share the exact code to fix this issue. Thanks in advance.
Argument Type "[String?]" : does not conform to expected type'AnyObject'
@IBAction func saveArch(sender: AnyObject) {
var contactArray = [name.text, address.text, phone.text]
NSKeyedArchiver.archiveRootObject(contactArray,
toFile: dataFilePath!)
}
Thanks
You should try
NSKeyedArchiver.archiveRootObject(NSArray(array: contactArray),
toFile: dataFilePath!)
You are sending a swift []
object that does not conform to AnyObject
since arrays and object are different things in swift.
You also have a problem with optionals: one or all of your .text
is of type String? (therefor it might be nil).
If you are positive none of this field is nil, you can use
var contactArray = [name.text!, address.text!, phone.text!]
Or change the declaration.
If you are not sure, you should do something like
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!)
This way you only add non nil
elements to the contactArray
By the way, Xcode 7.1 is out. No need to use the beta anymore