2016-06-26 21 views
1

我試圖在從XMLenclosure下載數組後追加圖像。 20圖像在XML。我想將這些圖像按順序排列在一個陣列中,然後嘗試保存在NSUserDefaults中。 任何人都可以告訴我如何做到這一點? 謝謝在數組中添加圖像

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!)!) 
       } 
      } 
     } 
    } 

'我得到這個錯誤後,一些輸出。圖像下載 圖像下載 圖像的數據 致命錯誤追加:數組索引超出範圍」

+0

執行插入操作後,調試器會告訴您有關陣列的信息? – Feldur

回答

0

獲取的所有圖像和分配給

var DtaAryVar: [NSData]() 

然後轉換NSData的陣列的數據和存儲

let DtaZipVar = NSKeyedArchiver.archivedDataWithRootObject(DtaAryVar) 

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

你可以通過

得到你的數據
var DtaZipVar = DftSdbVal.valueForKey("ImageKey") 
let DtaAryVar = NSKeyedUnarchiver.unarchiveObjectWithData(DtaZipVar) as! [NSData] 

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

用戶默認不是存儲圖像的好地方。你可以在那裏存儲URL到圖像,但圖像本身可能應該寫入文件 – Feldur

+0

謝謝但首先我想在tableViewCell中按順序顯示圖像,我試過很多不同的方式,但tableViewCell不按順序顯示圖像。通常tableViewCell在不同的單元格上顯示一個圖像,然後在右側單元格中顯示一些圖像。在這一步之後,我將圖像存儲爲任何最佳方式。 你可以檢查一下嗎? 謝謝 – ZAFAR007

+0

無法轉換'AnyObject'類型的值?到預期的參數類型'NSData' https://drive.google.com/open?id=0B29ka7gbDAYxSENBa2VfZm9ETUE – ZAFAR007