斯威夫特。错误:无法将类型'[AnyObject?]'的值转换为期望的参数类型'AnyObject?'
问题描述:
试图离线保存数据。但是,得到无法将类型'[AnyObject?]'的值转换为期望的参数类型'AnyObject?'的错误。无法弄清楚如何将AnyObject数组转换为字符串数组。感谢你们的帮助。斯威夫特。错误:无法将类型'[AnyObject?]'的值转换为期望的参数类型'AnyObject?'
// outside the function
var senderArray = [String]()
var messageArray = [String?]()
var photoArray = [UIImage?]()
// func.........
query.whereKey("downloaded", equalTo: false)
query.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error: NSError?) -> Void in
if error != nil {
}
for object in objects! {
self.senderArray.append(object.objectForKey("sender") as! String)
self.messageArray.append(object.objectForKey("message") as? String)
if object.objectForKey("photo") != nil {
if let converyPFFile = object.objectForKey("photo") as? PFFile{
let temp = try! converyPFFile.getData()
let image = UIImage(data: temp)
self.photoArray.append(image)
}
} else {
self.photoArray.append(nil)
}
}
var tempLocalNameArray = [AnyObject?]()
var tempLocalMessageArray = [AnyObject?]()
var tempLocalImageArray = [AnyObject?]()
if NSUserDefaults.standardUserDefaults().arrayForKey("nameArray") != nil {
tempLocalNameArray = NSUserDefaults.standardUserDefaults().arrayForKey("nameArray")!
tempLocalMessageArray = NSUserDefaults.standardUserDefaults().arrayForKey("messageArray")!
tempLocalImageArray = NSUserDefaults.standardUserDefaults().arrayForKey("imageArray")!
}
for i in 0 ..< self.senderArray.count {
tempLocalNameArray.append(self.senderArray[i])
tempLocalMessageArray.append(self.messageArray[i])
tempLocalImageArray.append(self.photoArray[i])
}
// error highlighted
NSUserDefaults.standardUserDefaults().setObject(tempLocalNameArray, forKey: "nameArray")
// error highlighted
NSUserDefaults.standardUserDefaults().setObject(tempLocalMessageArray, forKey: "messageArray")
// error highlighted
NSUserDefaults.standardUserDefaults().setObject(tempLocalImageArray, forKey: "imageArray")
self.loadChat()
}
答
您正在尝试使用NSUserDefaults存储图像。但NSUserDefaults不存储任何类型的数据。请阅读documentation:
The value parameter can be only property list objects: NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary. For NSArray and NSDictionary objects, their contents must be property list objects.
这article可以帮助你。
你会在哪一行发生错误? – Darko
最后三行(/ /错误突出显示) – Tony