2017-01-24 2 views
1

에 할당 할 수 없습니다스위프트 3 : I 포트에 다음 목표 - C 코드를 시도 AutoreleasingUnsafeMutablePointer

스위프트 3
[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. 
}]; 

 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 



    }, downloadTask: nil) 

내가 얻을 것은 진보는이 일정 할 것을 내가 할 수 없습니다 그것을 할당하십시오.

문제를 해결하는 방법은 무엇입니까? 다음 코드와 같이

+0

,'* someMutablePointer = someValue와;'오브젝티브 C가됩니다에'someMutablePointer.pointee = someValue' 스위프트에. 포인터로 가리키는 내용을 대체해야합니다. 포인터를 직접 작성할 필요가 없습니다. – OOPer

+0

어떻게해야할지 모르겠다. 내 질문에 예를 들어 답을 제공 할 수 있습니까? – DCDC

+0

죄송합니다. AWS를 사용하지 않아 코드를 확인할 수 없습니다. 내 정책처럼 답장되지 않은 코드는 넣지 않습니다. 그리고 당신은 당신의 질문에 당신이 지금까지했던 것을 보여 주면 좋을 것입니다. 100 % 확실하지 않더라도 시도 할 수 있습니다. 또는 AWS와 관련하여 도움을 줄 수있는 사람을 기다리는 데 약간의 시간이 필요할 수 있습니다. – OOPer

답변

1

당신은 포인터를 할당 할 수

일반적으로
AWSS3TransferUtility.default().enumerateToAssignBlocks(forUploadTask: { (uploadTask:AWSS3TransferUtilityUploadTask, uploadProgressBlockReference:AutoreleasingUnsafeMutablePointer<(@convention(block) (AWSS3TransferUtilityTask, Progress) -> Void)?>?, completionHandlerReference: AutoreleasingUnsafeMutablePointer<(@convention(block) (AWSS3TransferUtilityUploadTask, Error?) -> Void)?>?) in 
    print("Hello, world") 

    uploadProgressBlockReference?.pointee = {(task:AWSS3TransferUtilityTask, progress:Progress) -> Void in 
     print("Fraction completed: \(progress.fractionCompleted)") 
    } 
}, downloadTask: nil) 
관련 문제