Reputation: 631
I'm working with Xcode 8 with swift on MacOS Sierra in an iOS app. I realized a few months ago that the SQLDebug stops working... (It used to worked in my app)...
I have created a new empty project with the coredata flag enabled..Then I created an entity with attributes and I executed this func in the ViewDidLoad and Xcode is NOT logging the 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{
}
}
Upvotes: 11
Views: 3137
Reputation: 645
Core Data uses the new unified logging framework starting with iOS 10. There is a known issue in Xcode that interferes with the logging, but you can use -com.apple.CoreData.Logging.stderr 1
to get around it.
EDIT: For clarity, you must specify -com.apple.CoreData.SQLDebug 1
in addition to the above. This actually enables the SQL trace, while the above will let you see it.
As part of this transition, Core Data honors user defaults to log to os_log, stderr, or both with ‘com.apple.CoreData.Logging.oslog’ or ‘com.apple.CoreData.Logging.stderr’. Due to a known issue in Xcode, it may be useful to toggle stderr logging on during debugging.
You might also look in the new Console app, which will display logs from devices connected to your Mac.
Upvotes: 19