com.apple.CoreData.SQLDebug无效

LPS*_*LPS 9 xcode core-data ios

我正在使用iOS应用程序中的Mac OS Sierra上的swift与Xcode 8一起工作.几个月前我意识到SQLDebug停止工作......(它曾经在我的应用程序中工作)...

我创建了一个新的空项目,启用了coredata标志.然后我创建了一个带有属性的实体,我在ViewDidLoad中执行了这个func而Xcode没有记录sql

func fetchAllData(){

    //1 delegate
    let appDelegate =  UIApplication.shared.delegate as! AppDelegate
    let managedContext = appDelegate.persistentContainer.viewContext

    //2 prepare fetch request
    let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName:"Entrenamientos")

    //3 make fetch
    do{
        let fetchedResults =  try managedContext.fetch(fetchRequest) as! [NSManagedObject]
    }
    catch{

    }
}
Run Code Online (Sandbox Code Playgroud)

par*_*man 17

Core Data使用从iOS 10开始的新的统一日志记录框架.Xcode中存在一个干扰日志记录的已知问题,但您可以使用-com.apple.CoreData.Logging.stderr 1它来绕过它.

编辑:为清楚起见,您必须-com.apple.CoreData.SQLDebug 1另外指定以上内容.这实际上启用了SQL跟踪,而上面的内容将让您看到它.

来自https://developer.apple.com/library/content/releasenotes/General/WhatNewCoreData2016/ReleaseNotes.html

作为此转换的一部分,Core Data通过"com.apple.CoreData.Logging.oslog"或"com.apple.CoreData.Logging.stderr"来记录用户默认值以登录到os_log,stderr或两者.由于Xcode中的已知问题,在调试期间切换stderr登录可能很有用.

您还可以查看新的控制台应用程序,该应用程序将显示连接到Mac的设备的日志.

  • 我刚刚在自己的项目中重新确认过.请注意,您仍然必须在方案中使用-com.apple.CoreData.SQLDebug 1,因为stderr只允许查看日志记录并且SQLDebug启用SQL跟踪. (2认同)