23

Core Data SQL Debug を使用しているときに、sqlite データベースに送信される値を出力するにはどうすればよいですか?

" Arguments Passed on Launch "デバッグオプションで " -com.apple.CoreData.SQLDebug 1 "を使用すると、SQL構造がうまく出力されます

(ここでこれを使用する方法を確認できます: XCode4 and Core Data: How to enable SQL Debugging )

しかし、問題は、印刷された NSLog が似UPDATE ZTABLE SET ZCOLUMN = ? WHERE ZID = ?ていることであり、完全な SQL ステートメントやデータベースに送信されているデータを確認しようとしている場合、まったく役に立ちません。

4

2 に答える 2

38

Xcode で「製品 -> スキーム -> スキームの編集...」を開き、「起動時に渡される引数」に追加します。

-com.apple.CoreData.SQLDebug 3
-com.apple.CoreData.Logging.stderr 1 

(2 番目の起動引数は、iOS 10/macOS 10.12 以降でコア データをデバッグするために必要です。詳細については、com.apple.CoreData.SQLDebug が機能しないを参照してください。)

SQL ステートメントがバインドされているすべての値が表示されます。出力例:

test56[1588:c07] CoreData: sql: BEGIN EXCLUSIVE
test56[1588:c07] CoreData: sql: INSERT INTO ZEVENT(Z_PK, Z_ENT, Z_OPT, ZTIMESTAMP) VALUES(?, ?, ?, ?)
test56[1588:c07] CoreData: details: SQLite bind[0] = (int64)13
test56[1588:c07] CoreData: details: SQLite bind[1] = (int64)1
test56[1588:c07] CoreData: details: SQLite bind[2] = (int64)1
test56[1588:c07] CoreData: details: SQLite bind[3] = "368650709.435904"
test56[1588:c07] CoreData: sql: COMMIT
于 2012-09-06T18:49:50.503 に答える
3

Xcode 8 を使用している場合は、追加の引数も追加する必要があります。

-com.apple.CoreData.Logging.stderr 1
于 2016-09-28T11:13:27.497 に答える