Мне не нравится это исправление, так как это может привести к состоянию гонки. До сих пор я не могу придумать лучшего решения. Если кто-то сделает это, я бы хотел его услышать :) В любом случае, вот ответ Swift-версии ответа Ригеля Чена
import Photos
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
var localId:String?
let imageManager = PHPhotoLibrary.sharedPhotoLibrary()
imageManager.performChanges({ () -> Void in
let request = PHAssetChangeRequest.creationRequestForAssetFromImage(image)
localId = request.placeholderForCreatedAsset?.localIdentifier
}, completionHandler: { (success, error) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
if let localId = localId {
let result = PHAsset.fetchAssetsWithLocalIdentifiers([localId], options: nil)
let assets = result.objectsAtIndexes(NSIndexSet(indexesInRange: NSRange(location: 0, length: result.count))) as? [PHAsset] ?? []
if let asset = assets.first {
// Do something with result
}
}
})
})
}
}
Потому что остаток от 3/4 = 3.
http://en.wikipedia.org/wiki/Modulo_operator
Если вы не можете понять, почему остаток равен 3, у нас есть более серьезные проблемы .
Я не совсем понимал, чего ожидать, но я не мог понять, как
Итак, у вас есть 3 печенья, и вы хотите разделить их поровну между 4 людьми.
Поскольку людей больше, чем печенья, никто не получает печенье (quotient = 0), и вы получаете остаток в 3 печенья для себя. :)
3 по модулю 4 - это остаток от деления 3 на 4.
В этом случае 4 делится на 3 нуля, а остаток равен 3.