2015-06-14 23 views
2

可見我有兩個文件:DBStartViewController.swiftDBFindViewController.swift我的協議定義是不是在另一個斯威夫特文件

當我定義我:

protocol DBViewAnimationTransitioning { 
    var viewForAnimation: UIView? { get set } 
} 

DBStartViewController.swift它是不可見的,我DBFindViewController.swift。我得到一個錯誤:

Use of undeclared type DBViewAnimationTransitioning .

但是,當我將我的聲明DBFindViewController.swift那麼一切都OK。爲什麼它像那樣工作?

我需要在我的DBStartViewController.swift中使它清晰明瞭。

+1

'DBStartViewController'和'DBFindViewController'是否在同一個應用程序目標中?例如,如果其中任何一個處於嵌入式框架中,則可能需要爲您的協議使用「公共」訪問修飾符。 –

+0

好的,感謝您的提示:-)這是因爲'DBStartViewController'沒有像在'DBFindViewController'中一樣在測試目標中。我只是檢查添加我的'DBStartViewController'到測試目標,一切都很好。 –

+0

如果您不介意的話,我會將其添加爲aswer。 :) –

回答

4

如果您的課程位於不同的應用程序目標中,請確保您使用public作爲您的協議的訪問修飾符。默認情況下它是internal,這意味着它在模塊內共享,但從外部看不到。

+1

有時編譯器顯示錯誤時,我們不知道它關心的是什麼目標。在這種情況下,我們需要跳轉到'project navigator' - >'issue navigator',然後我們可以看到問題出在哪裏。 –

0

你可能在你的ViewController類中有協議聲明。在這種情況下,您可能需要致電DBStartViewController.DBViewAnimationTransitioning

可以肯定,我需要看到更多的代碼。