2016-04-03 27 views
-1

Verileri çevrimdışı kaydetmeye çalışıyor. Ancak, '[AnyObject?]' Türünün değerini 'AnyObject?' Beklenen argüman türüne dönüştürebilme hatası alınıyor. AnyObject dizisini String dizisine dönüştürme işlemini çözemedim. Yardımınız için teşekkürler.Swift. Hata: '[AnyObject?]' Türünün değeri 'AnyObject?' Beklenen argüman türüne dönüştürülemiyor.

// 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

Hata hakkında hangi satırı alıyorsunuz? – Darko

+0

son üç satır (// hata ile vurgulanır) – Tony

cevap

0

Görüntüleri NSUserDefaults ile depolamaya çalışıyorsunuz. Ancak NSUserDefaults, herhangi bir veriyi saklamıyor.

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.

Bu article size yardımcı olabilir: documentation okuyunuz.

+0

Ben de sorun isteğe bağlı olarak gelen messageArray = [String?]() – Tony

+0

Evet, ama bu sizin "kök" sorun değil. Sadece [String] kullanabilirsin, bu hiç sorun değil. Ancak daha karmaşık verileri daha sonra basit bir String dizisi saklamanız gerekir. Belki görüntüleri NSData'ya dönüştürmeyi düşünün. – Darko

İlgili konular