2017-10-12 24 views
0

僅作爲登錄過程的一部分,使用Firebase將用戶保存爲唯一的ID,用戶名和電子郵件。 在創建用戶,數據塊保存在一本字典,並在此聲明字典的結束它有「as [String: Any]可以使用「as」關鍵字明確指定鍵/值的類型嗎?

let values = ["username": username, "email": email, "id": uid!] as [String: Any] 

從我知道as關鍵字用於從一個向下轉型鍵入另一個,但這裏似乎只是說明鍵和值的類型。那是對的嗎?我認爲我錯過了一些東西,就好像是這種情況,編譯器不可能推斷出來,所以as會有點多餘?

這是as [String: Any]只是爲了清晰呢?

+1

實際上,在這種情況下,'as'關鍵字可以實現向上轉換,而不是向下轉換,因爲Any可以表示任何Swift類型。它可以用於上傳,向下轉換和橋樑鑄造。有關更多信息,請查看[類型轉換](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html)。 –

+0

是的 - 我曾經搜索過,但沒有看到這個 - 蜂蜜提供的鏈接中的jtbandes的回答確實回答了我的問題。 – cheznead

回答

1

編譯器可以自行推斷出values的類型,但在某些情況下,特別是在[String: Any]對象中,明確聲明該類型會提高編譯時間significantly

在這種情況下,as [String: Any]可能是爲了清晰和性能。

相關問題