2016-06-09 17 views
0

的錯誤拿出在這個方法中聲明:錯誤「未解決的標識符的使用」,但我已經標識的框架

func stringFromProduct(product: SPTProduct) -> String { 
    switch product { 
    case SPTProductFree: 
     return "Free" 
    case SPTProductPremium: 
     return "Premium" 
    case SPTProductUnlimited: 
     return "Unlimited" 
    default: 
     return "Unknown" 
    } 
} 

他們出現在SPTProductFree,SPTProductPremium和SPTProductUnlimited。

然而,在我使用的是框架的頭文件,這是宣佈:

typedef NS_ENUM(NSUInteger, SPTProduct) { 
    SPTProductFree, 
    SPTProductUnlimited, 
    SPTProductPremium, 
    SPTProductUnknown 
}; 

我的橋接文件設置正確,但它仍然說,這是一個懸而未決的標識符。

謝謝!

回答

1

Interacting with C APIs在「使用夫特與可可和Objective-C」參考:

夫特出口標有NS_ENUM宏作爲與Int原始值類型夫特枚舉任何C枚舉。將C枚舉大小寫名稱的前綴導入到Swift時會被刪除,無論它們是在系統框架還是自定義代碼中定義的。

所以你的Objective-C的枚舉導入到斯威夫特

public enum SPTProduct : UInt { 
    case Free 
    case Unlimited 
    case Premium 
    case Unknown 
} 

,你可以看到,通過使用含有定義的Objective-C頭文件中的「生成的接口」菜單項 。

因此,你使用它從斯威夫特

func stringFromProduct(product: SPTProduct) -> String { 
    switch product { 
    case .Free: 
     return "Free" 
    case .Premium: 
     return "Premium" 
    case .Unlimited: 
     return "Unlimited" 
    default: 
     return "Unknown" 
    } 
} 
相關問題