初探 NS_STRING_ENUM

本文探讨了在Objective-C到Swift迁移过程中,如何利用NS_STRING_ENUM改进字符串常量的使用,以提高代码的可读性和安全性。通过实例展示了NS_STRING_ENUM在Dcard App中的应用,以及在Swift中直接使用enum的尝试和遇到的问题,最终提出了解决方案。
摘要由CSDN通过智能技术生成

Objective-C 與 Swift 的那檔事(原文

前言

自從蘋果 WWDC 2014 大會上,我們的銀髮帥哥 Craig Federighi 宣布全新程式語言 Swift 之後,iOS 程式開發就進入了全新的領域(和噩夢XD)。

Dcard 在去年 Swift 2.0 發布之後便開始使用 Swift 開發,過程中發現了很多令人興奮的新特性、新寫法、和新的地雷(笑),未來我們會將一些使用 Swift 開發的心路歷程分享給各位。

今天我們將專注在 NS_STRING_ENUM 這個神奇的語法上,但在這之前我們先來談談 Objective-C 的字串常數。

Objective-C 字串常數

過去我們在使用 Objective-C 時,經常會宣告很多 NSString 的常數來當作 NSDictionary 的 key。例如:

// Dicitonary keys
NSString * const DCDictionaryKeyTitle    = @"title";
NSString * const DCDictionaryKeySubtitle = @"subtitle";
NSString * const DCDictionaryKeyCount    = @"count";

// 在使用上則是這樣:
NSDictionary<NSString *, id> *dict = @{......};

NSString *title    = dict[DCDictionaryKeyTitle]; 
NSString *subtitle = dict[DCDictionaryKeySubtitle]; 
NSInteger count    = [dict[DCDictionaryKeyCount] integerValue];
复制代码

這樣的寫法在 Objective-C 時代沒什麼問題,畢竟過去十幾年來 Objective-C 都是這樣寫的,但現在 Swift 出現了,我們就應該考慮 Objecitv-C 與 Swift 混用的情況。來看一下上面的常數宣告在 import 到 Swift 之後的使用方式:

// Objective-C 的常數被自動轉換成
let DCDictionaryKeyTitle:    String = "title" 
let DCDictionaryKeySubtitle: String = "subtitle" 
let DCDictionaryKeyCount:    String= "count"

// dict 的型別 
let dict: [String: Any] = [......]

// 使用 
let title    = dict[DCDictionaryKeyTitle]    as! String 
let subtitle = dict[DCDictionaryKeySubtitle] as! String 
let count    = dict[DCDictionaryKeyCount]    as! Int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值