2016-06-26 16 views
1

Ich versuche, Bilder in Array nach dem Download von XMLenclosure anhängen. 20 Bilder sind in XML. Ich möchte diese Bilder einzeln im Array im Bestellformular speichern und dann versuchen, in NSUserDefaults zu speichern. Kann mir bitte jemand sagen, wie ich das machen kann? DankAnfügen von Bildern in Array

var imageArray : [NSData] = [] 
    var imgIndex = 0 

downloadFileFromURL(NSURL(string: self.posts.objectAtIndex(indexPath.row).valueForKey("enclosure") as! String)!, completionHandler:{(img) in 
       dispatch_async(dispatch_get_main_queue(), {() -> Void in 
        cell.sideImageView.image = img 


        if indexPath.row == self.imgIndex{ 
        imageArray.insert(UIImageJPEGRepresentation(img, 0.75)!, atIndex: self.imgIndex) 
        self.imgIndex++ 
        print("Image append with data") 
        self.newsDefaults.setObject(imageArray, forKey: "image") 
        } 


       }) 
      }) 


    func downloadFileFromURL(url1: NSURL?,completionHandler: CompletionHandler) { 
     // download code. 
     if let url = url1{ 
      let priority = DISPATCH_QUEUE_PRIORITY_HIGH 
      dispatch_async(dispatch_get_global_queue(priority, 0)) { 
       let data = NSData(contentsOfURL: url) 
       if data != nil { 
        print("image downloaded") 
        completionHandler(image: UIImage(data: data!)!) 
       } 
      } 
     } 
    } 

‚Ich erhalte diesen Fehler nach einiger Ausgabe. Bild heruntergeladen Bild heruntergeladen Bild mit Daten fataler Fehler anhängen: out of range Array-Index‘

+0

Was sagt der Debugger Ihnen über das Array direkt nach dem Einfügen? – Feldur

Antwort

0

alle Bilder holen und zu

var DtaAryVar: [NSData]() 

Dann konvertieren Array von NSData zu Daten zuweisen und speichern

let DtaZipVar = NSKeyedArchiver.archivedDataWithRootObject(DtaAryVar) 

let DftSdbVal = NSUserDefaults.standardUserDefaults() 
DftSdbVal.setObject(DtaZipVar, forKey: "ImageKey") 

Sie können Ihre Daten durch

var DtaZipVar = DftSdbVal.valueForKey("ImageKey") 
let DtaAryVar = NSKeyedUnarchiver.unarchiveObjectWithData(DtaZipVar) as! [NSData] 

let ImjAryVar = [UIImage]() 
for DtaIdxVar in DtaAryVar 
{ 
    ImjAryVar.append(UIImage(data : DtaIdxVar)) 
} 
zurück erhalten
+0

Die Benutzereinstellungen sind kein guter Ort zum Speichern von Bildern. Sie könnten URLs zu Bildern dort speichern, aber Bilder selbst sollten wahrscheinlich in eine Datei geschrieben werden. – Feldur

+0

Danke Aber zuerst möchte ich Bilder in Folge in TableViewCell zeigen, ich habe viele verschiedene Möglichkeiten ausprobiert, aber TableViewCell zeigt Bilder nicht in der Reihenfolge. oft zeigt tableViewCell ein Bild auf verschiedenen Zellen und später einige Bilder in der rechten Zelle. Nach diesem Schritt speichere ich Bilder, was immer der beste Weg ist. Können Sie es bitte überprüfen? Danke – ZAFAR007

+0

Kann Wert vom Typ 'AnyObject?' Nicht konvertieren? zum erwarteten Argumenttyp 'NSData' https://drive.google.com/open?id=0B29ka7gbDAYxSENBa2VfZm9ETUE – ZAFAR007