在我的应用中,我有一个按钮。如果点击它,您可以将几张图像(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)并且"完成"也正在印刷。
这里有什么问题?
在此先感谢:)
答案 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循环中的扩展名才能让它适合你!