2016-11-12 103 views
0

使用夫特3的XCode 8.1(8B62)優先於夫特類

目標C typealias我有一個名爲Category我在這樣另一個類引用類:Foo(Category.self)。但是,Swift編譯器提供了以下錯誤:Generic parameter 'T' could not be inferred。檢查班級表明,斯威夫特認爲我指的是typealias Category - OpaquePointer這是一些內置的typealias。有關這裏的typealias的更多信息:https://developer.apple.com/reference/objectivec/category

據我瞭解編譯器應該有利於在當前模塊中的符號。我如何向編譯器指出我想要模塊中的類?這段代碼顯然在XCode 8B62的最新更新中破壞了。

+0

@Rob謝謝你的建議,但那也行不通。我發現問題是由合併衝突解決方案造成的。 'project.pbxproj'文件中缺少引用,導致編譯器在構建時忽略該文件。通過刪除和添加文件來修復。 – manwe858

回答

0

原來這是project.pbxproj的問題。之前的合併衝突缺少一些引用,這些引用使編譯器無法識別文件中的符號。我不得不刪除對該文件的引用,並再次將其作爲新文件添加。

0

嘗試擊敗這個typealias用自己的另一個問題:

typealias MyCategory = Category 

您現在可以使用MyCategory而不是分類的地方,編譯器誤解你的意圖。當然,只要編譯器知道你想要什麼,你仍然可以使用Category。另外,我建議避免在代碼中與Objective-C/Swift關鍵字太相似的類型名稱。

或者,您可以與目標的名稱限定的類型名稱。例如,如果您的目標(或模塊)被稱爲abc,則使用abc.Category

+0

感謝您的迴應,但這並不能解決問題,除非我將我的'Category'類重命名爲'MyCategory'。這不是我想要做的事情,因爲我希望它能匹配後端的命名方案。有沒有辦法指定我想通過語法引用的類? – manwe858