2011-06-21 24 views
92

我正在研究通用iOS應用程序,並且希望在調試時在日誌中看到原始SQL。關於如何爲iOS Core Data開發啓用原始SQL日誌記錄,有一些信息in this blog post。給出的例子是XCode 3,它只是不清楚如何在XCode 4中啓用此功能。XCode4和核心數據:如何啓用SQL調試

我試過「Product」 - >「Edit Scheme」並添加了「-com.apple.CoreData。 SQLDebug 1「轉換爲」啓動時傳遞的參數「,但我仍然沒有在日誌中看到任何輸出。不知道我是否在錯誤的地方看,或只是錯誤地傳遞參數。

+1

感謝這個工作對我來說。我的主要問題是我搜索的表格有74,000多行,我想知道查詢運行了多長時間,因爲它現在很慢。我尊重這樣一個事實,即有很多抽象事件在發生,但我真的對黑暗中發生的事情一無所知。這至少可以幫助我一點點。 – oalders

+0

只要您瞭解了這些限制,查看原始SQL就可以了,尤其是性能調整。人們遇到麻煩的地方是通過查看原始SQL來試圖找出對象圖表的行爲。由於兩者之間沒有直接關係,所以只會導致他們誤入歧途。 – TechZen

回答

142

你應該尋找在同一個地方你NSLOGS

,您應該轉到產品 - >編輯計劃 - >然後從左側面板中選擇Run YOURAPP.app並進入主面板的參數標籤。

在那裏您可以添加啓動時傳遞的參數。

您應該添加-com.apple.CoreData.SQLDebug 1

按OK鍵,你所有的設置。

這裏的關鍵是編輯您將用於測試的方案。

+8

謝謝你。原來,就模擬器而言,我的論點格式錯了,正如我在這裏看到的答案之一http://stackoverflow.com/questions/822906/how-do-i-get-the-coredata- debug-argument-to-output-to-the-console我需要傳遞** - com.apple.CoreData的參數。SQLDebug **和** 1 **的第二個參數以查看SQL輸出。 – oalders

+2

有關如何打印傳遞給數據庫的參數的任何想法?這種方法可以很好地查看查詢是如何構造的,但它僅打印sql語句,如'UPDATE ZTABLE SET ZCOLUMN =? WHERE ZID =?',看看發送的數據是不是很有用 –

+0

實際上,我認爲將它作爲一個真正的問題添加會更好;)http://stackoverflow.com/questions/12306343 /如何打印核心數據調試值 –

20

的XCode 4

它在管理我的NSZombieEnabled同一個地方

產品 - >編輯計劃 - >運行YouApp.app調試

在 「傳承啓動參數」,貼在完全相同:

-com.apple.CoreData.SQLDebug 1

警告 - 這東西是非常詳細的,如果你有核心數據的問題,這可能值得一看,但它也可能比你需要的更多的信息是錯誤的。

+0

以任何方式在字符串文件上打印此-com.apple.CoreData.MigrationDebug 1,以便用戶可以上載日誌文件 – rhlnair

5

我對此有疑問,然後意識到這是一個愚蠢的疏忽,我認爲這對你們中的一些人來說是個錯誤。當我在Xcode(4.3.1)中輸入參數時,我忽略了前面的連字符。如果我在命令行輸入它,我不會這樣做,但在GUI中,我忽略了它。我沒有發現在輸入2個獨立參數或1個參數(如某些帖子所建議的)之間有任何區別。因此,使用: -com.apple.CoreData.SQLDebug 1 ,而不是簡單: com.apple.CoreData.SQLDebug 1 ,在這兩個模擬器和真實設備