सरकारी एडब्ल्यूएस डॉक्स निम्नलिखित उद्देश्य-सी कोड शामिलस्विफ्ट 3: स्थानांतरण उपयोगिता enumerateToAssignBlocks विधि हस्ताक्षर
AWSS3TransferUtility *transferUtility = [AWSS3TransferUtility defaultS3TransferUtility];
[transferUtility
enumerateToAssignBlocksForUploadTask:^(AWSS3TransferUtilityUploadTask *uploadTask, __autoreleasing AWSS3TransferUtilityUploadProgressBlock *uploadProgressBlockReference, __autoreleasing AWSS3TransferUtilityUploadCompletionHandlerBlock *completionHandlerReference) {
NSLog(@"%lu", (unsigned long)uploadTask.taskIdentifier);
// Use `uploadTask.taskIdentifier` to determine what blocks to assign.
*uploadProgressBlockReference = // Reassign your progress feedback block.
*completionHandlerReference = // Reassign your completion handler.
}
downloadTask:^(AWSS3TransferUtilityDownloadTask *downloadTask, __autoreleasing AWSS3TransferUtilityDownloadProgressBlock *downloadProgressBlockReference, __autoreleasing AWSS3TransferUtilityDownloadCompletionHandlerBlock *completionHandlerReference) {
NSLog(@"%lu", (unsigned long)downloadTask.taskIdentifier);
// Use `downloadTask.taskIdentifier` to determine what blocks to assign.
*downloadProgressBlockReference = // Reassign your progress feedback block.
*completionHandlerReference = // Reassign your completion handler.
}];
मैं स्विफ्ट 3 में परिवर्तित करने की कोशिश की (अपलोड कार्य केवल)
transferUtility.enumerateToAssignBlocks(forUploadTask:
{
let progressPointer = AutoreleasingUnsafeMutablePointer<AWSS3TransferUtilityUploadProgressBlock?>(&uploadProgressBlock)
let completionPointer = AutoreleasingUnsafeMutablePointer<AWSS3TransferUtilityUploadCompletionHandlerBlock?>(&completionBlock)
progress = progressPointer
completion = completionPointer
}
, downloadTask: nil)
लेकिन Xcode फेंकता निम्न त्रुटि
प्रकार() ->() से अपेक्षित तर्क प्रकार के मूल्य को परिवर्तित नहीं कर सकता [...]
किसी ने इसे स्विफ्ट 3 में काम कर लिया है? शायद विधि हस्ताक्षर
बदल गए हैं संपादित करें:
transferUtility.enumerateToAssignBlocks(forUploadTask: { (uploadTask:AWSS3TransferUtilityUploadTask, progress:AutoreleasingUnsafeMutablePointer<(@convention(block) (AWSS3TransferUtilityTask, Progress) -> Void)?>?, error: AutoreleasingUnsafeMutablePointer<(@convention(block) (AWSS3TransferUtilityUploadTask, Error?) -> Void)?>?) in
let progressPointer = AutoreleasingUnsafeMutablePointer<AWSS3TransferUtilityProgressBlock?>(&self.progressBlock)
let completionPointer = AutoreleasingUnsafeMutablePointer<AWSS3TransferUtilityUploadCompletionHandlerBlock?>(&self.completionHandler)
//
progress = progressPointer
completion = completionPointer
}, downloadTask: nil)
अब Xcode बताता है कि दोनों प्रगति और पूरा मान जाने जाते हैं और बदला नहीं जा सकता:
मैं @donkon जवाब लागू होता है।
अपने परिवर्तनों – donkon