[iOS] 開放資料之中國石油
只要會開車騎車的人,都會想知道現在的油價,現在中國石油開放資料可供串接,然而規格是我從來沒碰過的SOAP,這塊「肥皂」比起簡潔的JSON複雜多,於是我還要借助開源來幫我處理~
只要會開車騎車的人,都會想知道現在的油價,現在中國石油開放資料可供串接,然而規格是我從來沒碰過的SOAP,這塊「肥皂」比起簡潔的JSON複雜多,於是我還要借助開源來幫我處理~
我使用固態硬碟的Macbook Air最近又常出現「空間不足」警告,可以參考我先前文章:Mac硬碟空間不足問題,那次有提到Xcode中的衍伸資料 (DerivedData),存放著我多年以來的專案暫存檔,數量之多佔據容量超過10GB。
現在我發現另一個空間更加肥大的原因,就是iOS 裝置支援 (iOS Device Support),因為我有在開發iOS App,時常需要拿實機做測試,當我開著Xcode等待,它會自動去判斷有無支援此裝置的作業系統,比如iOS 9.3.1、iOS 10.0.1,只要沒有該版本的支援,Xcode會從手機下載支援擋到預設路徑如下圖:
以至於空間再怎麼多,也會被這些作業系統支援檔給塞滿,所以我決定刪除比較不會用到的版本。

Xcode連結實機時,會出現上圖進度狀況,表示它正在從裝置下載作業系統支援檔到我的筆電。
我發現越高的作業系統支援檔容量越大,像iOS 10.0.1是2.9GB。
註:檢索筆電各檔案容量的軟體是OmniDiskSweeper。
參考:自己的經驗、Mac硬碟空間不足問題。
回憶上篇文章Xcode 6 beta 初體驗已是兩年前的事,今日就來Xcode 8 beta 初體驗,試用一下這一版的Playground。
以下是以Quick Sort為例,Swift 3的語法真的有變異,有幾行code出現紅字,依照指示修改後就能執行。
於是要重新熟悉Swift囉:P~
想用Swift學習演算法的人,可以參考下列連結喔~
參考:/swift-algorithm-club。
看這標題應用查詢格式 (Application Query Schemes)不知在表達啥咪,那就用白話文解釋⋯⋯就是我們的App想要跳轉到他人App時,所要遵從的規範。在iOS 9之後Apple更改遊戲規則,必須在info.plist注明我們想要跳轉的格式,不然程式就會報錯:
This app is not allowed to query for scheme
比如我想要跳轉到Google Map App,我會在程式碼中設定開頭:
comgooglemaps://
iOS 9以後就要在info.plist加入:

果真加入後立馬編譯執行,就能跳轉到Google Map App,而不是到App Store App的Google Map App頁面呢~
參考:[iOS] 使用Google Map導航、[iOS] 使用Google Map顯示地點、Google SDK –
Google 地圖 URL 配置、canOpenUrl – This app is not allowed to query for scheme instragram iOS9。
開發App迭代十分快速,時常要更改版本號碼Version Number和建置號碼Build Number,如此容易區隔每個版本,測試員回報問題也能輕易對照。
Version Number制定規則比較直覺,一直都是從1.0.0開始,feature有大更新就變2.0.0,feature只有小變動就改2.1.0,bug偶爾修掉就微調為2.1.1。
Build Number可以怎麼做呢?我習慣將它設定為日期+時間,比如今天日期:160324・時間0111,合起來就是1603240111,當收集到Crash報告或bug清單,對照Git版本控制,就能知道當時的問題所在!
過去我們都是手動去更改BN,現在有更聰明的作法,就是在Xcode的Build Phases加入Run Script,接著按編譯(Command + B),就能在General的Build看到自動更換為當時的日期時間。
加入這幾行Run Script就好囉⋯⋯
timestamp() {
#date +" at %H:%M:%S on %m/%d/%Y"
date +“%y%m%d%H%M"
}
buildNumber=$(/usr/libexec/PlistBuddy -c “Print CFBundleVersion" “${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(timestamp)
/usr/libexec/PlistBuddy -c “Set :CFBundleVersion $buildNumber" “${PROJECT_DIR}/${INFOPLIST_FILE}"
看不太懂沒關係,反正這只設定那麼一次XD~

設定Run Script

編譯後Build自動變更
時常用Xcode除錯的工程師都知道,Xcode對中文字還不是很友善,因為除錯時印出的內容,中文字都會變成以\U為開頭的編碼,如:
\U900d\U9059\U6587\U5de5\U4f5c\U5ba4
儘管知道這是中文字,但實在很難確認這行代表什麼字啊⋯⋯
好在總是有解決方案,我強者同事阿宅,找到解法更發揚光大,讓任何人只要引用自訂Category,之後在Xcode除錯平台上必能如實顯示中文字!
大小類別 (Size Class)是iOS 8新釋出的類別,主要目的是想要解決設備歧異的問題,透過實作Size Class,我們可以減少許多客製設備類別 (iPhone、iPad)與螢幕大小 (iPhone:3.5吋、4吋、4.7吋、5.5吋,iPad:7.9吋、9.7吋)的程式碼!還有之所以推出,是為了因應未來有更多不一樣螢幕大小的產品(如Apple Watch),所以若能採用Size Class便可減輕開發負擔!
其分為普通(Regular)和緊密 (Compact)兩個種類(class)。開發者便可以無視實際的尺寸,而是對這兩類和它們的組合進行適應。這樣不論在設計時還是程式碼上,我們都可以不再受限於實際的尺寸,而是變成遵循尺寸的視覺感官來進行適應。
更新到了Xcode 6,新建立的專案不再預設.pch檔,之前都將時常用到的class放置.pch檔,讓專案下所有的class都能引用,如今Xcode 6取消預設,我們該怎麼自行建立?
我們可以看到Xcode 5所預設建立的.pch檔位置在專案檔的下一層,路徑就找到囉~
Apple今年推出的iPhone 6和iPhone 6+螢幕大小為4.7吋和5.5吋,這對開發者來說無疑是個新的考驗,因為先前我們只要在3.5吋和4吋做設計,如今一次多了兩款大小!以為一個專案要同時為四種大小做設計,事實上也是如此⋯⋯不過呢~Xcode也隨著iPhone進化,我們只要透過新的功能特性,即可簡化設計不同螢幕大小的程序!
寫程式同時也在設計(所以才叫做程式設計師),界面最好能夠直接在電腦螢幕上預覽,比起一維的程式碼,二維的畫面更加直覺!在新的專案中,我開始使用「自動佈局(Auto Layout)」技術,設定好後在四種螢幕大小顯示效果相當好,Xcode的各尺寸畫面即時預覽做得相當棒,且看一下我的一個畫面吧!
看得出來由上而下,分別是3.5吋、4吋、4.7吋、5.5吋嗎?我只是做切換預覽的動作,元件就依照我所設定來「自動佈局」!不太需要跑各種螢幕大小的實機或模擬器囉~當然如果是用code寫自動佈局,還是要編譯執行跑結果啦:P~
參考:iPhone 4/5/6 手指觸及範圍、[寫真] iPhone 5C、[寫真] iPhone 6 與 iPhone 6+。
工欲善其事,必先利其器。使用Xcode開發iOS App,首先就要了解其提供哪些功能,雖然我已經開發約兩年,但依然還是有些功能的英文名詞沒記,雖然說使用久了習慣就好,不過要是能多記得些英文名詞,在網路上找尋答案時,就能更順利看得懂高手所描述的解法。
這裡有張Xcode工作區視窗 (Workspace Window)圖,偶爾回來看一下,很容易就記起來了!
參考:XCode4一些使用經驗分享。
Written
on 2014 年 08 月 28 日