2017-02-27 5 views
0

私は2つのフレームワークプロジェクト(AとB)を持っており、どちらのフレームワークにもUIViewController Extensionがあります。スウィフト - 異なるメソッド名を持つ複数の拡張機能ですが、まだ動作しません。

  1. フレームワークBでの私の拡張子は、フレームワークでは、この方法「loadFromNib」
  2. を持っている「B」私は、フレームワークでは、「loadFromNib」
  3. にアクセスするクラス「B」私も「」
  4. フレームワークを参照してくださいを持っています今、私はUIViewController拡張機能をFramework "A"に追加しましたが、 "loadViewFromNib"という名前を付けました。

私の既存のクラスでは、loadFromNibが使用できないというエラーがスローされ、loadViewFromNibメソッドにアクセスするように提案しています。私がここで紛失しているのは何ですか?私のクラスは、右の拡張

//Code from Framework B 
extension UIViewController 
{ 
    public class func loadFromNib() -> Self? 
    { 
     return loadNibFilePrivateMethod() 
    } 
    .... 
} 

//Code from Framework A 
extension UIViewController 
{ 
    public class func loadViewFromNib() -> Self? 
    { 
     return loadNibFilePrivateMethod() 
    } 
    .... 
} 

に言及されていないのはなぜ私が(他のチームが所有している)、複数の他のフレームワークからフレームワークAに共通のコードをマージする過程で午前任意の他のフレームワークには何も変更することはできません。だから、私のコードは何も破壊することなく共存したい。

+0

'現在、私の既存のクラスはloadFromNibが利用できないというエラーをスローします.'フレームワークBのクラスはありますか? –

+0

コードを表示してください。フレームワークAでの 'loadFromNib'の定義。 – JeremyP

+0

@JeremyPはポストをいくつかのコードで更新しました。 – Tamil

答えて

0

今私の既存のクラスは、あなたがそれが宣言されているフレームワークの外部からloadFromNibを使用しようとしているので、loadFromNibはおそらく

利用できないというエラーをスロー?あなたがpublicとして宣言する必要があり、他のモジュール(枠組みを考えて、ターゲット)に利用できるようにする方法/タイプ/機能が欲しいとき

(これは利用可能手段が...何のエラーメッセージではありません)。

は、だからあなたの問題を解決するために、あなたの方法

public func loadFromNib(...

を宣言し、それはおそらく最も利用できるようになります。

更新

あなたはViewControllerをインスタンス上またはビューのメソッドを呼び出していますか?名前は、彼らが何をすると予想されるのかのあいまいさを示唆している。

+0

フレームワークBのmyView.loadFromNib()を使用すると、メンバー 'loadFromNib'はありません。これはフレームワークBの既存のコードであり、早期に作業していました。フレームワークAに新しい拡張を追加した後、このメッセージが表示されます。 – Tamil

+0

@Tamil 'loadFromNib'はUIVIewControllerの拡張です。 'myView.loadFromNib()'は動作しません。ViewまたはControllerオブジェクトで呼び出しているかどうかを確認する –

関連する問題