iOS未保存所有图片

时间:2015-11-14 14:25:08

标签: ios arrays swift for-loop uiimage

在我的应用中,我有一个按钮。如果点击它,您可以将几张图像(13)下载到您的照片库 我创建了一个包含图像的数组,名为" 1"," 2"," 3"," 4"等等。 :(我检查过,数组中包含所有13张图像)

var myPhotos: NSMutableArray = []
for i in 1...13 {
    let img = UIImage(named: "\(i)")!
    myPhotos.addObject(img)
}

然后我将所有图像保存到照片库:

var photo = UIImage()
var j = 0
for photo in myPhotos {
    j++
    UIImageWriteToSavedPhotosAlbum(photo as! UIImage, nil, nil, nil)
}
print(j)
print("done")

在我的模拟器的照片库中,有13张图像。在我的iPad上运行时,这个数字变化很大,从8到12但从不是13.那就是我把j放在那里的原因。它证明循环一直在数组中运行(j在控制台中为13)并且"完成"也正在印刷。

这里有什么问题?
在此先感谢:)

1 个答案:

答案 0 :(得分:1)

这应该有效:

class ViewController: UIViewController {

  var myPhotos = [UIImage]()
  var savedPhotos = 0

  override func viewDidLoad() {
    super.viewDidLoad()

    // setup photos
    for i in 1...13 {
      let img = UIImage(named: "\(i).jpg")! // remove the ".jpg" for you to work
      myPhotos.append(img)
    }

    // save photos
    saveNextPhotoToPhotosAlbum()
  }

  func saveNextPhotoToPhotosAlbum() {
    if let photo = myPhotos.first {
      UIImageWriteToSavedPhotosAlbum(photo, self, "image:didFinishSavingWithError:contextInfo:", nil)
    }
  }

  func image(image: UIImage, didFinishSavingWithError error: NSErrorPointer, contextInfo:UnsafePointer<Void>) {
    if error == nil {
      print("saved \(++savedPhotos). photo")
      myPhotos.removeFirst()
      saveNextPhotoToPhotosAlbum()
    }
  }

}

在我的情况下,我使用了.jpg图像,所以也许你必须删除for循环中的扩展名才能让它适合你!