2016-12-02 7 views
2

に関数を変換する上で、私はでスウィフト2機能を持っていた:奇妙な問題スウィフト3

public override func drawRect(rect: CGRect) 

をし、Xcodeはスウィフト3に変換することを申し出ました。

Invalid redeclaration of 'draw' 

どのように私はきちんとスウィフト3に変換することができます:今、それは私に次のエラーを与え、

open override func draw(_ rect: CGRect) { 

しかし:私はそれを変換するために、赤い点を押すと、それがに変換しますか?

override func draw(_ rect: CGRect) 

、それは

+1

グローバル関数か、型のメソッドですか?また、コンパイラが何を確​​認して、同じスコープ内に型シグネチャ 'draw(_ :)'を持つ別の関数があるかどうかを確認してください。 –

+0

@DanielHallクラス内メソッドです。いいえ別のドローがありません(_ :) ここに投稿した機能だけがコンパイラに表示されます。 –

+0

@Mighty Codder、私の解決策が提供されているかどうか確認してください。あなたは 'UIView'から継承するクラスのメソッドをオーバーライドしようとしていますね。 – lmiguelvargasf

答えて

0

スウィフト3にこのコード(あなた)に動作します:

+0

@shalloThought、 'open'を使う目的は何ですか? – lmiguelvargasf

+0

この場合、 'open'は必要ありません。私はちょうど最初に掲載されたコードが動作することを述べたかった。この回答の「公開」アクセスレベルの詳細については、http://stackoverflow.com/a/40633441/1457385をご覧ください。 – shallowThought

0

は、あなたのクラスがUIViewであると仮定すると、私はあなたのメソッドのシグネチャが唯一であるべきだと思う

class MyView: UIView { 
    open override func draw(_ rect: CGRect) { 
     // 
    } 
} 

ここでうまくコンパイルしてください。

あなたのクラス内に既にdraw()の実装があると思われます。

派生データを削除、削除、削除します。

0

Xcodeは適切に機能

open override func draw(_ rect: CGRect) 

私はあなたの前にその名前の関数を持っていたと思いを変換し、XcodeのはのdrawRectを変換するとき、あなたは今、同じ名前の2つの機能を持っています。私は今自分で試してみて、上のような描画関数を宣言するとエラーは出ません。しかし、このような関数を2回宣言すると、まったく同じエラーが発生します。