2016-09-19 57 views
0

我一直在更新一些Swift 3.0的代碼。我正在使用梅爾文里維拉的夢幻般的date extension for Swift 3.0。現在梅爾文聲明的時區作爲公共枚舉如下:使用公共枚舉來控制Swift 3中的TimeZone

public enum TimeZone { 
case local, utc 
} 

現在我有與常用的一些TimeZone的代碼我前雨燕3.0的代碼的麻煩。例如:

let df = DateFormatter() 
    df.dateFormat = "MMM d, yyyy, hh:mm a" 
    df.timeZone = TimeZone(abbreviation: usersTimeZone) 

每當我用這樣的代碼我得到一個編譯錯誤,指出,「‘時區’不能建造,因爲它沒有可訪問的初始化」。如果將TimeZone構建爲公共枚舉,那麼使用各種TimeZone函數的正確方法是什麼?

回答

1

錯誤消息說TimeZone沒有任何可訪問的初始值設定項,這是因爲它沒有。 TimeZone是一個枚舉,你可以在今天輸入TimeZone.localTimeZone.utc

對於初始化程序部分,您可以在Apples文檔站點閱讀有關init here的更多信息。

你可以閱讀更多關於Apples documentation site上的枚舉。

編輯:
更新您的代碼如下:

let df = DateFormatter() 
df.dateFormat = "MMM d, yyyy, hh:mm a" 
df.timeZone = TimeZone(abbreviation: String(describing: Zone.local)) 

public enum Zone: String { 
    case local 
    case utc 
} 
  1. 我改名時區枚舉區beacuase的時區爲DateFormatter
  2. 你需要傳遞 保留workd TimeZone的字符串值,這是什麼
  3. 我已經更新了Swift 3.0語法的代碼

+0

感謝Rashwan,我試圖將我的代碼更改爲df.timeZone = TimeZone.local,但是我收到一個編譯器錯誤,指出「無法指定'TimeZone'類型的值來鍵入'TimeZone!'」。我仍然有點困惑,我應該用什麼代碼來替換我的pre-swift 3.0代碼。 – Tom

+0

@Tom,我修復了你的錯誤。使用我的代碼,它將與Swift 3.0一起工作。 –