2012年3月26日 星期一

讓 Xcode 與 Git 合作愉快

一般而言用 git add 加入一個專案的時候,git 會自動把整個資料夾裡面全部的資料都加入
就會看到如下的圖
而一般的我們,看到這麼多檔案,就直接按確定加入了。但其中有一個是不能加入的,等等來看看。
接著就開發程式,寫到一個部分就 commit,看起來 Project Navigator 也很乾淨,如下

但在 Push 的時候經常性的會發生像下圖一樣的錯誤
到底什麼是 uncommitted ?從 Xcode 跟本看不到,於是打開 Terminal 下指令來看看
各位看倌可能看不清楚,把紅色的貼在下方:
modified:   PlayGround/PlayGround.xcodeproj/project.xcworkspace/xcuserdata/chronoer.xcuserdatad/UserInterfaceState.xcuserstate
原來在有一個叫 UserInterfaceState.xcuserstate 檔案也被改變了,但是在 Xcode 完全看不到?所以一開始的時候 UserInterfaceState.xcuserstate 不要加入 Git Repository 因為它是 Xcode 產生暫時性的 Binary 檔。如下圖,git add 時候不要勾選。
但如果已加入怎麼辦?
在還沒 commit 之前 可以用 git rm --cache  fileName 來當成 undo git add
再者用指令,將其排除在 git控制外
在根目錄輸入
vi .gitignore
gitignore 的內容是
*.xcuserstate
再加入 .gitignore 用  git add .gitignore
然後 commit 此時如果之前不小心也 commit 了 UserInterfaceState.xcuserstate
就用 git rm PlayGround/PlayGround.xcodeproj/project.xcworkspace/xcuserdata/chronoer.xcuserdatad/UserInterfaceState.xcuserstate
將 UserInterfaceState.xcuserstate 從 Git 移掉
之後  UserInterfaceState.xcuserstate 再來不會來亂了
Xcode 和Git 就可以相處得很愉快。



2012年3月14日 星期三

LLVM 支援新的語法?

小道消息,Apple 的 LLVM 有出現新的語法了,目的還是想讓 Developer 可以寫少一點的Code
是從這邊傳出來的。

讓我們來看看。
NSNumber :

[NSNumber numberWithInt:50];              =>  @50;
[NSNumber numberWithDouble:5.21]     =>  @5.21;
[NSNumber numberWithBool:YES]        =>  @YES;

推論,在數值前加上 @ 就變成一個 id

NSArray :

@[@"one", @"two", @"three"];

多了 @ 和 []

NSDictionary :

@{ @"key": @"value", @"red": @"apple" };

就是加上 @{} 還有 :來分別 key 和 object ,看起來是先寫 key

到底會不會變這樣呢?無從得知,不過如果是這樣還滿方便的