iOS deveplopment start with Swift 3.0
Swift 从2.2看到3.0, 但是一直找理由没有做一些实际的项目。节前比较清闲,准备先搭建一个基本的架子。原因是,我平时的大部分开发工作是 Golang 服务器开发,而Golang 是自带标准库的,因此基本看完语言后,就可以对着标准库写东西了。而 Swift 则是语言和库在设计之初就是分离的,因此看完语言基本上是不会走路的。
Swift 3.0当然不是现在性价比最高的入门选择,至少不是线上生产的最佳选择(2016.09.29)。因为去 github 逛一圈,会发现很多库都还没有适配3.0,无奈 Swift 每一个版本都如同一门新的语言,因此,要适配就不是修改三五行就可以搞定的了。本着踩坑然后填坑是最佳实践的原则,Swift 3.0倒是非常不错的入门之选。
准备搭建的架子要使用如下几个 lib:
- 日志:CocoaLumberjack
- 网络请求:Alamofire
- 调试:FLEX
CocoaLumberjack
需要修改 pod, 直接从 git 获取最新代码:
pod 'CocoaLumberjack/Swift', :git => 'https://github.com/CocoaLumberjack/CocoaLumberjack'
CocoaLumberjack 配置Xcode 8使用时,无法通过XcodeColors在 console 彩色输出。解决办法就是通过 emoji 表情:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
class LogFormatter: DDDispatchQueueLogFormatter { let threadUnsafeDateFormatter: DateFormatter override init() { threadUnsafeDateFormatter = DateFormatter() threadUnsafeDateFormatter.formatterBehavior = .behavior10_4 threadUnsafeDateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS" super.init() } override func format(message logMessage: DDLogMessage!) -> String { let dateAndTime = threadUnsafeDateFormatter.string(from: logMessage.timestamp) var logLevel: String let logFlag = logMessage.flag if logFlag.contains(.error) { logLevel = "❗️" } else if logFlag.contains(.warning){ logLevel = "❓" } else if logFlag.contains(.info) { logLevel = "?" } else if logFlag.contains(.debug) { logLevel = "✅" } else if logFlag.contains(.verbose) { logLevel = "?" } else { logLevel = "?" } let formattedLog = "\(dateAndTime) |\(logLevel)| [\(logMessage.fileName) \(logMessage.function)] #\(logMessage.line): \(logMessage.message)" return formattedLog; } } |
Alamofire
直接install. 需要注意的是只支持 iOS 9+
FLEX
直接 install. 如果 import 提示找不到 module, 尝试重启 Xcode.
使用 example:
1 2 3 4 |
// init FLEX let fm = FLEXManager.init() fm.simulatorShortcutsEnabled = true |