2017-11-11 13 views
-1

私はちょっと誤解しています。 - (Void)を使用してコードを書き込もうとしたが、エラー "Expected declaration"または時には "Binary operator '-' cannot be applied to operands of type 'UIFont' and '(Void).Type'"が表示されます。Swiftの「期待される宣言」エラーを修正するには?

どうしてですか?迅速にこの機能を正しく使用する正しい方法は何ですか?

{

- (Void)keyboardWillShow { //>> showing me the error "Binary operator '-' cannot be applied to operands of type 'UIFont' and '(Void).Type'" 
     // Animate the current view out of the way 
     if (self.view.frame.origin.y >= 0) 
     { 
      [self setViewMovedUp:YES]; 
     } 
     else if (self.view.frame.origin.y < 0) 
     { 
      [self setViewMovedUp:NO]; 
     } 
    } 

}

おかげ

+1

スウィフトプログラミング言語のための[Appleのドキュメント](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/index.html)を通読してください。 –

+1

問題の原因となっている実際のコードで質問を更新してください。 – rmaddy

+1

これはSwiftコードではなくObjective-Cコードです。 [Swift Programming Language](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/)の本をお読みください。 – rmaddy

答えて

5

あなたが戻り値のない関数を宣言しようとしているように聞こえます。あなたはコードの下のようなnilの値を返すことができ

func thisFunction() { 
    .. 
} 
-2

:宣言されていない場合

func myFunc(myVar: String) ->()? { 
    print(myVar) 
    return nil 
    } 
var c = myFunc("Hello") 
print(c) // nil 

が、スウィフト関数は、常にデフォルト値nilを返すようスウィフトでは、これが行われます。コード以下のように:

func myFunc(myVar: String) { 
     print(myVar) 
     return 
     } 
    var c = myFunc("Hello") 
    print(c) //() 
+0

* Swift関数は宣言されていない場合は常にデフォルト値nilを返します*が間違っています。 2番目の例では、コンパイラエラーが発生します(実際にはSwift 3以降で2つ)。 – vadian

+1

* "スウィフト関数は、宣言されていない場合は常にデフォルト値nilを返します" * - いいえ、これは当てはまりません。 – rmaddy

+0

厳密に言えば、このバージョンのmyFunc(myVar :)関数は、戻り値が定義されていなくても値を返します。定義された戻り値の型を持たない関数は、Void型の特別な値を返します。これは単純に空のタプルであり、()のように書かれています。 –

関連する問題