顯示具有 Xcode 標籤的文章。 顯示所有文章
顯示具有 Xcode 標籤的文章。 顯示所有文章

[iOS]包裝Swift framework

找到一篇寫得極好的文章(文章1),包出來的framework可以一併套用在模擬器&實機!!
但照著做後,發現自己寫的framework中有引用第三方元件的部分都有問題,無法找到所使用的module(換言之就是import失敗),後來改了Valid Architecture,加上x86_64即可,至於armv7或x86_64這些配置值的定義,可以再參考文章2

文章1
Swift Framework — Ch: 1 . Develop a Swift Framework
文章2
iOS armv7, armv7s, arm64区别与应用32位、64位配置

[iOS]this class is not key value coding-compliant for the key

在xib增加新的元件,並透過IBOutlet去連結h檔,會一直報錯
this class is not key value coding-compliant for the key

後來發現是連結時,Object選項要主動選擇對應的h檔檔名,不然預設會是File's Owner就會報錯,之前開發都不會遇到這問題,不知是否為Xcode的bug捏(✘﹏✘ა)

正確的設定圖


錯誤的設定圖

'....failed to commit files' Couldn't communicate with a helper application.

如題,某天在Xcode commit files遇到此狀況,解決方式如下

●先確認你的git name & email是否跑掉(空值)
Show you the global settings for user.name and user.email (and other things)
git config --global -l
參考網址 https://forums.developer.apple.com/thread/18560

●如果真的跑掉,再設定回去吧
1.更改git電子郵件
指令    xcrun git config --global user.email xxxx
範例    xcrun git config --global user.email karen_chang@somedomain.com
2.更改git用戶名
指令    xcrun git config --global user.name xxxx
範例   xcrun git config --global user.name Karen_Chang

Core Data Fetches Instrument

最近參考Core Data by Tutorials v2.0調整library效能
在第九章Measuring and Boosting Performance Page224中提到demo程式碼Fetch Duration花費約2,000 microseconds(2 seconds)

我也測了一下自己的專案效能,發現不得了,取個二三筆也要2秒多(如下圖粉紅圈起處2,113)

改啊改 都已經在fetch data前先透過countForFetchRequest確認是否真的要向entity下查詢
怎麼還是2秒多 @_@

後來才發現是單位明明就是microseconds
電子書雞婆的換算2,000 microseconds(2 seconds)是錯的!!!
2,000 microseconds應該是0.002 seconds才對 囧


雖然有點囧,但至少改寫成可避免效能差的寫法 T_T

[iOS]Find SQLite file by simulator from Xcode 8

假設application執行時有儲存Core Data,想查看實際資料的步驟如下

STEP 1 安裝可查閱SQLite檔案的軟體
我是安裝Firefox的外掛SQLite Manager

STEP 2 查詢所用的simulator對應序號(下圖紅框處)

STEP 3 開啟Finder前往檔案位置
/Users/{yourMacLoginName}/Library/Developer/CoreSimulator/Devices/{simulator identifier}/data/Containers/Data/Application/{application identifier}/Documents/

yourMacLoginName:登入mac的使用者名稱
simulator identifier   :STEP 2的紅框處序號
application identifier:此序號代表你的application。直接參考此篇文章Task4即可取得SQLite位置,也不用單取此序號。
最懶的方式是直接前往
/Users/{yourMacLoginName}/Library/Developer/CoreSimulator/Devices/{simulator identifier}/data/Containers/Data/Application/,然後從Application資料夾找到修改日期最新的子資料夾(因為剛剛才執行完程式),進去Documents資料夾即可看到SQLite檔案。
又或者是你知道Core Data對應產生的SQLite檔案名稱,也可直接在Application資料夾搜尋嚕

STEP 4 開啟SQLite Manager查看資料

[iOS]Unable to load class named 'XXX' for entity 'XXX'

根據stackoverflow的討論,Unable to load class問題已於Xcode7修正,但不知為何還是遇到,特此紀錄一下

開發工具:Xcode 8.0
開發語言:Objective-C
遇到問題:CoreData: warning: Unable to load class named 'analytics.OpenLog' for entity 'OpenLog'.  Class not found, using default NSManagedObject instead.
解決方式:刪除Current Product Module

[iOS]Create NSManagedObject subclass in Objective-C instead of Swift in Xcode

Xcode8預設產生Swift的NSManagedObject subclass
想替DataModel產生Objective-C的class,記得修改Code Generationg設定即可

[iOS]Version of iOS framework

相隔1年多又要客製打造iOS專用的framework,可能Xcode許多設定都不同了,卡關蠻久的,這邊紀錄一下關於framework的version定義

問題描述:
framework的m檔明明重新撰寫過,但不管怎麼封裝,使用此framework的app總是取到舊版的執行結果
解決版法:
更改framework的版本號,封裝時才能真更新內部內容

但是呢~framework的版本號分為Major和Minor,必須依照不同時機去改變,而不是把版本號通通加大,Major和Minor對應的修改處如下

Version定義與觀念請參考Apple官方說明  如果懶得看,就直接Apple整理的表格XD

申請安裝Crashlytics

Crashlytics真的做得非常好,還沒真的導入到專案,就在安裝過程中感受到Twitter的誠意,無論是安裝流程或是後來的使用方式,真的是連笨蛋都會用XD

但還是紀錄一下吧,網路上目前的文章都有點舊了呢
安裝時間:2016年5月
安裝環境:Xcode 7.3

1.前往登入頁,申請使用Crashlytics


2.收到驗證信並開通
驗證信基本上幾分鐘內會收到(我是一提出申請馬上收到)
開通並輸入團隊名稱(方便管理專案)




3.開通成功,開始下載對應IDE的安裝檔




4.打開fabric.app並登入


5.選擇要導入的專案


6.選擇要安裝的SDK
這邊我先選Crashlytics而已


7.選擇安裝加載的方式(CocoaPods或Framework)
選完後會自動幫你把Xcode打開,我選CocoaPods,所以右圖是如何修改Podfile的指示


8.依照說明安裝
修改Podfile並update



9.將Fabric整合到Xcode(Add Run Script)
實際Add Run Script的步驟可參考官網步驟




10.開始寫code,讓Crashlytics可以在app中執行
按照指令將藍色highlight處貼到專案的AppDelegate.m


11.Done
給他一點時間跑,就完成啦!


真的很簡單呢!只要跟著第3步驟中安裝好的fabric.app,一步一步完成他所指示的所有事項,就能導入Crashlytics  ^_^
PS:登入過程中如果遭遇錯誤,可能是你的公司網路環境有阻擋,請暫時先改用其他網路環境安裝嚕

[轉載]Xcode中加入第三方參考, Groups與Folder References的差別

透過Add Files to 'project'...加入第三方參考時會有下圖設定要選擇

其中Added folders選項的差異說明可參考此文 Xcode Groups vs. Folder References
概念一直到Xcode6都一樣,只是不像文中說的reference的資料夾會變成藍色的