2015-05-21 156 views
4

我試圖重新編譯SwiftyUserDefaults(https://github.com/radex/SwiftyUserDefaults)添加迦太基的支持,但在試圖編譯我看到以下錯誤:不明確的類型名稱錯誤

Ambiguous type name 'Proxy' in 'NSUserDefaults'

爲下面的代碼

public func ?= (proxy: NSUserDefaults.Proxy, @autoclosure expr:() -> Any) { 
    if !proxy.defaults.hasKey(proxy.key) { 
     proxy.defaults[proxy.key] = expr() 
    } 
} 

'Proxy' is ambiguous for type lookup in this context

public subscript(key: String) -> Proxy { 
    return Proxy(self, key) 
} 

據我所知 - 問題在於類Proxy,它被嵌入到擴展中。

public extension NSUserDefaults { 
    class Proxy { 
     private let defaults: NSUserDefaults 
     private let key: String 

     private init(_ defaults: NSUserDefaults, _ key: String) { 
      self.defaults = defaults 
      self.key = key 
     } 

     // MARK: Getters 

     public var object: NSObject? { 
      return defaults.objectForKey(key) as? NSObject 
     } 

     // ..................................  

    } 
} 

我查找過文檔,但沒有任何引用可以在擴展中使用類。

是不是?在「編譯源」曾經在SwiftlyUserDefaults.framework(這是SwiftlyUserDefaultsTests的依賴),而一旦構築階段:

+0

項目在我的機器上克隆後編譯得很好。你使用的是哪個版本的Xcode? –

+0

版本6.3.2(6D2105) –

+0

此時使用6.3.1(6D1002)。也許在新版本中發生了一些變化,並且SwiftyUserDefaults還沒有更新。 –

回答

1

你兩次你的目標SwiftlyUserDefaultsTests編譯SwiftlyUserDefaults.swift文件。

只需從您的SwiftlyUserDefaultsTests目標的「編譯源碼」構建階段中刪除SwiftlyUserDefaults.swift文件,您應該很好。

enter image description here

+0

我有同樣的問題,我無法解決它。你請幫我嗎? http://stackoverflow.com/questions/38500798/how-to-include-the-library-in-the-target-for-ui-test-class-in-xcode –

相關問題