【发布时间】:2015-05-07 06:25:02
【问题描述】:
我有一个应用程序,可以为我的应用程序上的每张票创建一个独特的照片库。我需要弄清楚如何遍历该图库,以便一次将图像上传到服务器。我在 youtube 上关注了这些教程。 (Video) 我目前使用 Swift 作为我的语言。我的最终目标是拥有类似下面的伪代码。
//I need the following for loop example
for photo in gallery
{
uploadToServer(photo)
}
//this function works already
func uploadToServer(photo:UIImage)
{
callRest
postPhoto
}
这是我的代码到目前为止无法弄清楚如何循环。不过他们。
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", self.albumName)?
let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions)
if let first_Obj:AnyObject = collection.firstObject{
//found the album
self.assetCollection = collection.firstObject as PHAssetCollection
self.albumFound = true
}
else { albumFound = false }
var i = collection.count
self.photoAssets = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
self.photoAssets.enumerateObjectsUsingBlock{(object: AnyObject!,
count: Int,
stop: UnsafeMutablePointer<ObjCBool>) in
if object is PHAsset{
let asset = object as PHAsset
println("Inside If object is PHAsset, This is number 1")
let imageSize = CGSize(width: asset.pixelWidth,
height: asset.pixelHeight)
/* For faster performance, and maybe degraded image */
let options = PHImageRequestOptions()
options.deliveryMode = .FastFormat
imageManager.requestImageForAsset(asset,
targetSize: imageSize,
contentMode: .AspectFill,
options: options,
resultHandler: {
(image, info)->Void in
self.photo = image
var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
var server = defaults.objectForKey("imageServer") as String!
var error: NSError? = nil
var imageData = UIImageJPEGRepresentation(self.photo, 90)
var url = NSURL(string: server)
var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
//request.setValue("multipart/form-data", forHTTPHeaderField: "Content-Type")
request.HTTPBody = imageData
var response: NSURLResponse? = nil
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)
let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
println("API Response: \(results)")
/*
/* The image is now available to us */
self.sendPhotos(image)
println("enum for image, This is number 2")*/
})
}
}
【问题讨论】:
-
继续吧。最难的是什么?
-
我不知道要循环什么,我是 swift 和 iOS 开发的新手。我尝试循环通过我的 PHAssetCollection,不会让我,所以我尝试循环通过我的 PHFetchResults 相同的东西。我不确定照片框架是如何工作的。
-
你看过关于 Photos 框架的 WWDC 视频吗?这很简单。
-
我确实看了视频,刚才又看了一遍。它没有解释如何像数组一样循环图像。至少我不了解如何“获取”它们。我将使用我的代码添加到我的帖子中
-
很好,所以您使用的是
fetchAssetsInAssetCollection。因此,请查看它的文档。它返回什么?它返回一个 PHFetchResult。所以你的self.photoAssets是一个PHFetchResult。所以现在查看 PHFetchResult 的文档!你看到了什么?你注意到什么了吗?有什么方法可以帮助您(提示提示)*enumerate* 这些结果?
标签: ios swift image-uploading photosframework