2014-06-20 99 views
7

在Objective-C能正常工作如何迅速比較枚舉?

enter image description here

在IOS

enter image description here

或者

enter image description here

ALAuthorizationStatus定義不能編譯這個斯威夫特SDK

enum ALAuthorizationStatus : Int { 
    case NotDetermined // User has not yet made a choice with regards to this application 
    case Restricted // This application is not authorized to access photo data. 
    // The user cannot change this application’s status, possibly due to active restrictions 
    // such as parental controls being in place. 
    case Denied // User has explicitly denied this application access to photos data. 
    case Authorized // User has authorized this application to access photos data. 
} 
+1

請告訴我們您的枚舉定義。從IOS SDK – Alexander

+1

AssetsLibrary – Charlie

回答

3

比較運算符==返回Bool而不是Boolean。 以下編譯:

func isAuthorized() -> Bool { 
    let status = ALAssetsLibrary.authorizationStatus() 
    return status == ALAuthorizationStatus.Authorized 
} 

(就個人而言,我覺得從斯威夫特編譯器的錯誤信息有時會混淆 在這種情況下,這個問題是不是==的論點,但不正確的返回類型。)


其實,下面還應該編譯由於自動類型推斷:

func isAuthorized() -> Bool { 
    let status = ALAssetsLibrary.authorizationStatus() 
    return status == .Authorized 
} 

但它無法與編譯器錯誤「找不到成員‘授權’」,除非你 明確指定status變量的類型:

func isAuthorized() -> Bool { 
    let status:ALAuthorizationStatus = ALAssetsLibrary.authorizationStatus() 
    return status == .Authorized 
} 

這可能是在目前雨燕的錯誤編譯器(在Xcode 6的β1測試)。

更新:的第一個版本,現在編譯在Xcode 6.1。