2012-09-06 28 views
13

如何在使用核心數據SQL調試時打印發送到sqlite數據庫的值?如何打印核心數據調試值?

使用「-com.apple.CoreData.SQLDebug 1」在調試選項我「傳承啓動參數」打印SQL結構就好

(你可以檢查看看如何使用此在這裏:XCode4 and Core Data: How to enable SQL Debugging

但問題是,打印的NSLog的是一樣的東西UPDATE ZTABLE SET ZCOLUMN = ? WHERE ZID = ?,如果你想看到的是完整的SQL語句和/或數據被髮送到數據庫,它並不能幫助所有。

回答

29

打開「產品 - >計劃 - >編輯計劃......」在Xcode並添加 到「參數傳遞就啓動」:

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

(需要對核心數據調試上的第二次發射參數 iOS 10/macOS 10.12或更高版本,請參閱com.apple.CoreData.SQLDebug not working以獲取更多信息。)

您將看到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 
+0

它沒有顯示'NSFetchRequest'請讓我知道是有什麼辦法也顯示 –

+0

@VarunNaharia:你可以簡單地打印請求,就像'NSLog(@「request:%@」,request)' –

+0

我正在使用swift,並且在控制檯上檢查了'po fetchRequest',並且我得到了這個' NSFetchRequest:0x1704c23e0>(實體:TravelDetail;謂詞:(id == 6412); sortDescriptors:((null));類型:NSManagedObjectResultType;)' –

2

如果您正在使用Xcode中8,你需要還需要添加額外的參數

-com.apple.CoreData.Logging.stderr 1