2016-04-03 21 views
-1

データをオフラインで保存しようとしています。しかし、 'AnyObject?'型の値を期待される引数型 'AnyObject?'に変換できないというエラーが発生しました。 AnyObject配列をString配列に変換する方法を理解できませんでした。皆さんありがとうございます。スイフト。エラー:型 '[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() 
    } 
+0

どのラインでエラーが表示されますか? – Darko

+0

最後の3行(//エラーがハイライトされています) – Tony

答えて

0

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はあなたを助けるかもしれません。

+0

問題は、messageArray = [String?]()のようなオプションから来ていると思います。 – Tony

+0

はい、これはあなたの「根本的な」問題ではありません。あなたは[String]を使うことができますが、これはまったく問題ありません。しかし、単純なString配列より複雑なデータを格納する必要があります。おそらく、NSDataに画像を変換すると思います。 – Darko

関連する問題