2016-10-09 7 views
0

코드의이 세그먼트 내가 말했다 라인Swift 3에서 BFTask를 어떻게 사용합니까?

//collect view info  
self.dataStash(collectionItems![self.selectedRow].ID, itemCondition: 2).continueWithBlock({ 

에 오류가 발생 스위프트 3 지금

override func prepare(for segue: UIStoryboardSegue?, sender: Any?) { 
    if (segue!.identifier == "FeedDetailSeg") { 
     let viewController:ItemDetail = segue!.destination as! ItemDetail 

     viewController.DetailItem = collectionItems![self.selectedRow] 

     if self.cognitoID == collectionItems![self.selectedRow].seller { 
      viewController.owned = true 
     } 
     else { 
      viewController.owned = false 
     } 

     //remove item from untapped 
     //appDelegate.untapped.removeAtIndex(self.selectedRow) 

     //collect view info 
     self.dataStash(collectionItems![self.selectedRow].ID, itemCondition: 2).continueWithBlock({ 
      (task: BFTask!) -> BFTask! in 

      if (task.error != nil) { 
       print(task.error!.description) 
      } else { 
       print("DynamoDB save succeeded") 
      } 

      return nil; 
     }) 

    } 
} 

스위프트 2에서 완벽하게 작동 : (' 유형의 값을 변환 할 수 없습니다 BFTask < _> !) -> BFTask! ' 예상 인수 형식 '(BFTask?) -> Any ?!'

이것은 AWS를 사용하여 DynamoDB에 항목을 저장합니다.

+0

Swift 3에 대한 설치를 업데이트 했습니까? https://github.com/BoltsFramework/Bolts-Swift – Adrian

답변

0

변경 (스위프트 3.1 구문으로 업데이트) Any? 대신이 같은 BFTask?에 반환 형식,

//collect view info 
    self.dataStash(collectionItems![self.selectedRow].ID, itemCondition: 2).continueWithBlock({ 
     (task: BFTask!) -> Any! in 

     if (task.error != nil) { 
      print(task.error!.description) 
     } else { 
      print("DynamoDB save succeeded") 
     } 

     return nil; 
    }) 

감사합니다 :)

0

귀하의 self.dataStash 작업은 유형을 지정합니다 일반 괄호 안의 BFTask 당신이 BFTask 반환 유형을 지정할 수 있습니다 체인 작업에서 특히

self.dataStash(collectionItems![self.selectedRow].ID, itemCondition: 2).continue({ (task: BFTask<MyObject>!) -> Any? in 

:

var dataStash : BFTask<MyObject>! 

는 다음 코드가 dataStash 작업 완료 호출 변경해야합니다 :의 당신의 self.dataStash이 유형이라고 가정 해 봅시다

continue({ (task: BFTask<MyObject>!) -> BFTask<MyDifferentObject>? in 

참고 MyObjectMyDifferentObject는을 준수해야프로토콜.