如何在 iOS 上寫一款輸入法?這個問題已經被很多人解答過了。你可以輕易通過 Google 找到一篇詳細的教程。但是,在 macOS 上寫一款輸入法就沒那麼簡單了。
好吧,嚴格來講,是指用 Swift 在 macOS 上寫一款輸入法很難。主要的原因是 從來沒有人做過這件事情 。
目前能夠獲取的資料,除了蘋果官方的 API 說明(一點用也沒有),以及官方的 demo(很詳細但過時了,而且[……]
如何在 iOS 上寫一款輸入法?這個問題已經被很多人解答過了。你可以輕易通過 Google 找到一篇詳細的教程。但是,在 macOS 上寫一款輸入法就沒那麼簡單了。
好吧,嚴格來講,是指用 Swift 在 macOS 上寫一款輸入法很難。主要的原因是 從來沒有人做過這件事情 。
目前能夠獲取的資料,除了蘋果官方的 API 說明(一點用也沒有),以及官方的 demo(很詳細但過時了,而且[……]
Xcode中 8 正式版已經發佈,我要在第一時間遷移我的專案到 Swift 3 —— 畢竟這是趨勢。
在遷移的過程當中我遇到了很多問題——比如 Xcode 提供的自動遷移工具根本沒有用,在我等待了兩個多小時之後,我放棄了,選擇手動遷移——畢竟,Xcode 的自動校正也是很好用的。
然而——在遷移過程當中,Xcode 一直處在 「indexing」 中,功能也不怎麼全……可能是由於 Swi[……]
根據國家的規定,所有網盤必須接受審查! (可能是因為女神太多了,你懂的 =_=),然後大部分網盤紛紛停止服務,大廠商裡現在只有某度雲還在運營。但是,你存到某度雲裡的所有資料都要接受審查(女神的電影會變成15秒教育片,這還是輕的;要是你敢說dang不好,或者把類似的文件存到某度雲裡,明天就會有人來給你送快遞…)所以,根據這個背景環境,我需要一個屬於自己的網盤(不管你需要不需要,至少我需[……]
我們都直到,第三方輸入法比如搜狗輸入法有個經典的手勢操作——在鍵盤上左右劃動即可移動光標。而這個功能我自己也十分的常用,所以,我想要自己來實現它。
首先我想到的就是 UISwipeGestureRecognizer ,不過結果可想而知,劃動一次只能移動一格光標,這可不是我想要的。
看來唯一的辦法就是用 UIPanGestureRecognizer[……]
在一開始,Swift 裡並沒有提供正則表達式的支持,所以我們只能自己來封裝,比如說寫一個結構體,像這樣:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
struct MyRegex { let regex: NSRegularExpression? init(_ pattern: String) { regex = try? NSRegularExpression(pattern: pattern, options: .CaseInsensitive) } func match(input: String) -> Bool { if let matches = regex?.matchesInString(input, options: [], range: NSMakeRange(0, (input as NSString).length)) { return matches.count > 0 } else { return false } } } |
其實現在 Swift 已經有了對正則表達式的支持,我們只需要這樣:
1 |
let result = name.rangeOfString("^[a-z]", options: .RegularExpressionSearch) |
直接就能獲取正則捕獲的內容了。
獲取到的是一個[蠟筆[……]
大多數情況下,如果我們想要獲取數組中某一段的內容(比如說從前到中間,或者數組最後的某些值),這時候就需要遍歷數組來給新的數組賦值:
1 2 3 4 5 6 7 |
let fixedArray = [1,2,3,4,5,6] var myArray:[Int] = [] for (i,n) in fixedArray.enumerate() { if i > 3 {break} myArray.append(n) } |
這樣數組短了還好說無所謂,但如果數組比較大而我們需要的值又比較多,那遍歷起來顯然就很浪費時間。
Swift 中本身就提供了對數組進行拆分的功能,這個機制是一個叫做 [crayon-676af9[……]
使用 python 的時候,經常需要下載一些第三方的框架,好在 python 也有類似 apt 的包管理工具,果仁。
不過,pip 雖然能夠管理包,卻沒有切換鏡像源的功能,而我們下載的包,大多數都在國外大型的代碼託管服務器上,這就導致了往往幾百KB的包要下載一個小時。
這裡我們假定,作為程序員的你,已經給電腦部署了 HTTPS 以及 HTTP 代理,我們之前也講過[……]