初探 NS_STRING_ENUM
Dcard Lab
91

Hello,感謝貴司的文章

但是,文章中提到的『但我們想了一下,如果說 NS_STRING_ENUM 會自動轉成 Swift 的 enum』這似乎有誤?NS_STRING_ENUM最後轉出來的swift結構是struct並非enum。也沒有init?(rawValue:)而是init(rawValue:),並failable initializer

而在貴司文章中的gist https://gist.github.com/anonymous/498030a95a6f74cf03942935a59e68e7#file-dcard_lab_ios_11_11-swift 12行的地方這樣寫

if let payloadKey = DCNotificationPayloadKey(rawValue: key) {

這邊應該會遇到以下錯誤

Initializer for conditional binding must have Optional type,

https://bugs.swift.org/browse/SR-2742:這邊說明了遇到一樣的狀況,而且swift中的doc是錯的。

https://bugs.swift.org/browse/SR-3146 這邊,也提到NS_STRING並非真的變成swift enum。

不知道為什麼你們的transform這邊可以這樣寫呢?我在這個地方也好需要failable init啊…

感謝解惑

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.