2016-10-11 12 views
1

私はSwift 2.3で私のアプリを書いています.Google Cloud AppEngineを使用しています。今私はxCode8.0にアップグレードし、私のアプリをSwift 3.0に変換する必要があります。以下のコードはSwift 2.3で正しいです。しかしそれはSwift 3.0では間違っています。どんな助けもありがとう! 問題: '(GTLServiceTicket !, GTLObject !, NSError!) - > Void'の値を期待される引数型 'GTLServiceCompletionHandler!'に変換できません。あなたの跳躍は覚えて3.0 #Xcode 8予想される引数型の値を変換できませんGTLServiceCompletionHandler

もの#Swiftする場合は、特別にあなたのコードにいくつかの変更を行う必要があり

func sendRequest() -> GTLServiceTicket? { 
    if self.query != nil && shouldSend { 
     self.ticket = appService.executeQuery(query!, completionHandler: { 
      (ticket: GTLServiceTicket!, object: AnyObject!, error: NSError!) -> Void in 
      if error != nil { 
       for handler in self.onFailure { 
        handler(ticket, error) 
       } 
      } else { 
       for handler in self.onSuccess { 
        handler(ticket, object) 
       } 
      } 
     }) 
    } 
    return ticket 
} 

答えて

0

: -

  • をNSはほとんどの場所から削除され 例:NSErrorError

  • になりましたまた、今度はid objective-c wiからのパラメータswift3にはAnyのタイプがあります。

そこで質問、Objective-Cのコードのパラメータは、(非NULLまたはNULL可能など)NULL可能属性を持っていなかった場合 以前は、スウィフトはとそれを変換に戻ってきます!それらを非選択的にする(強制アンラッピング)。今それを変換する?それらをオプションにします。それはなぜあなたがエラーになっているのですか?終了ハンドラはなります:

func sendRequest() -> GTLServiceTicket? { if self.query != nil && shouldSend { self.ticket = appService.executeQuery(query!, completionHandler: { (ticket: GTLServiceTicket?, object: Any?, error: Error?) -> Void in if error != nil { for handler in self.onFailure { handler(ticket, error) } } else { for handler in self.onSuccess { handler(ticket, object) } } }) } return ticket }

0

は、あなたの答えをありがとう! 私はそれを試しました。次の2つのコードが動作しています。すべての必要な "オプション 'NSError' として" 追加し

1.

func sendRequest() -> GTLServiceTicket? { 
    if self.query != nil && shouldSend { 
     self.ticket = appService.executeQuery(query!, completionHandler: { 
      (ticket: GTLServiceTicket?, object: Any?, error: Error?) -> Void in 
      if error != nil { 
       for handler in self.onFailure { 
        handler(ticket, error as Optional<NSError>) 
       } 
      } else { 
       for handler in self.onSuccess { 
        handler(ticket, object as Optional<AnyObject>) 
       } 
      } 
     }) 
    } 
    return ticket 
} 

2.

func sendRequest() -> GTLServiceTicket? { 
    if self.query != nil && shouldSend { 
     self.ticket = appService.executeQuery(query!) { ticket, object, error in 
      if error != nil { 
       for handler in self.onFailure { 
        handler(ticket, error as Optional<NSError>) 
       } 
      } else { 
       for handler in self.onSuccess { 
        handler(ticket, object as Optional<AnyObject>) 
       } 
      } 
     } 
    } 
    return ticket 
} 
"オプション 'ANYOBJECT' など"
関連する問題