2015-08-14 48 views
4

我有一個有趣的問題,涉及兩個不同的具有相同名稱的公共枚舉的Cocoapods。類名與命名空間問題相同

使用隱式命名空間這通常不是一個問題,除了兩個Cocoapods都有一個與它們的目標名稱相同的類。

因此,如果我將兩個Cocoapods導入到引用具有相同名稱的枚舉的同一個文件中,會生成一個「enum-name在此上下文中查找類型不明確」,並且如果我試圖通過ModuleName.enum引用枚舉Swift說ModuleName沒有名爲enum的成員。

大概這是因爲類,而不是名稱空間沒有名爲enum的成員。任何人都知道這個方法嗎?

這裏是這個樣子代碼:

Cocoapod答:

public enum Test { 

} 

public class A { 

} 

Cocoapod B:

public enum Test { 

} 

public class B { 

} 

其他文件:

import A 
import B 

// Results in "A does not have a member named Test" 
var test: A.Test = A.Test(rawValue: "a") 

// Results in "Test is ambiguous for type lookup in this context" 
var test: Test = Test(rawValue: "a") 

回答

1

有一個簡單的解決方法爲此,altho呃,我不確定爲什麼Swift不喜歡Namespace.ClassName語法。

創建一個新的文件,並添加以下代碼:

import A 

typealias ATest = Test 

然後,在你的文件,你可以這樣做:

import B 

var testA: ATest = ATest(rawValue: "a") 
var testB: Test = Test(rawValue: "a") 

或者,您可以創建BTEST等效typealias文件中。