简体   繁体   English

迅速。 错误:无法将“[AnyObject?]”类型的值转换为预期的参数类型“AnyObject?”

[英]Swift. Error: Cannot convert value of type '[AnyObject?]' to expected argument type 'AnyObject?'

Trying to save data offline.尝试离线保存数据。 But, getting the error of Cannot convert value of type '[AnyObject?]' to expected argument type 'AnyObject?'.但是,得到无法将类型 '[AnyObject?]' 的值转换为预期的参数类型 'AnyObject?' 的错误。 Couldn't figure out how to convert AnyObject array to String array.无法弄清楚如何将 AnyObject 数组转换为 String 数组。 Thank you for you guys help.谢谢你们的帮助。

// 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()
     }

You are trying to store images with NSUserDefaults.您正在尝试使用 NSUserDefaults 存储图像。 But NSUserDefaults does not store any kind of data.但是 NSUserDefaults 不存储任何类型的数据。 Please read the documentation :请阅读文档

The value parameter can be only property list objects: NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary. value 参数只能是属性列表对象:NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary。 For NSArray and NSDictionary objects, their contents must be property list objects.对于 NSArray 和 NSDictionary 对象,它们的内容必须是属性列表对象。

This article may help you.这篇文章或许能帮到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Swift:无法将&#39;String&#39;类型的值转换为预期的参数类型&#39;@noescape(AnyObject)引发-&gt; Bool&#39; - Swift: Cannot convert value of type 'String' to expected argument type '@noescape (AnyObject) throws -> Bool' 尝试保存数组时出现错误-无法将类型[Data]的值转换为预期的参数类型&#39;[Dictionary <String, AnyObject> ]” - Trying to saveArray, got error - Cannot convert value of type '[Data]' to expected argument type '[Dictionary<String, AnyObject>]' 如何修复无法将“AnyObject”类型的值转换为预期的参数类型“_?” 错误? - How to fix Cannot convert value of type 'AnyObject' to expected argument type '_?' error? 错误:无法将[anyobject]强制转换为array &lt;_&gt;类型 - error : cannot convert [anyobject] to type array<_> in coercion 无法指定类型&#39;[[String:AnyObject]]&#39;的值来键入&#39;[[String:AnyObject?]]&#39; - Cannot assign value of type '[[String : AnyObject]]' to type '[[String : AnyObject?]]' Swift错误:无法将“ArraySlice”类型的值转换为预期的参数类型 - Swift Error: Cannot convert value of type 'ArraySlice' to expected argument type 无法下标String:AnyObject类型的值 - Cannot subscript a value of type String:AnyObject 按类型过滤 Swift [AnyObject] 数组 - Filtering a Swift [AnyObject] array by type swift:无法将类型“()”的值转换为预期的参数类型“ [Double]” - swift : Cannot convert value of type '()' to expected argument type '[Double]' Swift 2.2-无法下标&#39;[Dictionary <String, AnyObject> ]”,索引类型为“字符串” - Swift 2.2 - Cannot subscript a value type of '[Dictionary<String, AnyObject>]' with an index of type 'String'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM