Xcode 4 та основні дані: як увімкнути налагодження SQL


102

Я працюю над універсальним додатком для iOS, і я хотів би бачити необроблений SQL в журналах під час налагодження. У цій публікації блогу є деяка інформація про те, як увімкнути необроблений журнал SQL для розробки основних даних iOS. Наведений приклад стосується Xcode 3, і мені просто не зрозуміло, як увімкнути це в Xcode 4.

Я спробував "Продукт" -> "Редагувати схему" і додав " -com.apple.CoreData.SQLDebug 1 " до "Аргументи передані при запуску", але я все ще не бачу жодного виводу в журналах. Не впевнений, чи дивлюся я в неправильному місці або просто передаю аргументи неправильно.


1
Дякую за це Моє головне питання полягає в тому, що таблиця, в якій я шукаю, має трохи більше 74000 рядків, і я хотів отримати уявлення про те, як довго працюють запити, оскільки зараз це досить повільно. Я поважаю той факт, що відбувається чимало абстракцій, але я справді був у темряві щодо того, що відбувається під капотом. Це хоча б трохи допомагає мені.
oalders

Поки ви розумієте обмеження, прекрасно дивитися на сирий SQL, особливо для налаштування продуктивності. Там, де люди потрапляють у скруту, намагається з'ясувати, як поводиться графік об'єкта, дивлячись на сирий SQL. Оскільки між двома прямими стосунками немає, це просто зводить їх з пуття.
TechZen

Відповіді:


150

Ви повинні дивитись там, де ви отримуєте NSLOGS

І вам слід перейти до продукту -> Редагувати схему -> Потім на лівій панелі оберіть Запустити YOURAPP.app та перейдіть на вкладку Аргументи основної панелі.

Там ви можете додати аргумент, пройдений при запуску.

Вам слід додати -com.apple.CoreData.SQLDebug 4(число від 1 до 4, більша кількість робить його більш багатослівним)

Натисніть ОК, і все буде налаштовано.

Ключовим тут є редагування схеми, яку ви будете використовувати для тестування.


8
Дякую за це Виявляється, що стосується симулятора, формат моїх аргументів був неправильним, як я бачу в одній з відповідей тут stackoverflow.com/questions/822906/… мені потрібно передавати аргумент -com.apple.CoreData.SQLDebug і другий аргумент 1 для того, щоб побачити вихід SQL.
oalders

2
будь-які думки про те, як надрукувати аргументи, передані в базу даних? цей підхід добре працює, щоб побачити, як структурується запит, але він друкує лише заявку sql, як, UPDATE ZTABLE SET ZCOLUMN = ? WHERE ZID = ?і не дуже корисно реально бачити, що дані надсилаються
Felipe Sabino

Насправді, я подумав, що буде краще додати це як справжнє питання ТАК;) stackoverflow.com/questions/12306343/…
Феліпе Сабіно

Чи є спосіб, я можу увійти, лише якщо він вставляється в базу даних не для іншого випадку?
Bishal Ghimire

@BishalGhimire Я не впевнений, можливо, ви могли б дещо відфільтрувати події. Я б фільтрував вихід безпосередньо за допомогою фільтрування тексту.
Nicolas S

20

XCode 4

Це там же, де я керую своїм NSZombieEnabled

Продукт -> Редагувати схему -> Запустити налагодження YouApp.app

У розділі "Аргументи, викладені при запуску" вставте точно:

-com.apple.CoreData.SQLDebug 1

Попередження - цей матеріал дуже багатослівний, якщо у вас виникають проблеми з основними даними, це може бути варто переглянути, але це може бути також більше інформації, ніж вам потрібно про неправильну річ.


Будь-який спосіб роздрукувати цей -com.apple.CoreData.MigrationDebug 1 на рядовий файл, щоб користувач міг завантажити файл журналу
rhlnair

5

У мене виникли проблеми з цим, а потім зрозумів, що це дурний пропуск, який, я вважаю, є більшою помилкою для деяких із вас. Коли я ввійшов у аргумент Xcode (4.3.1), я залишив провідні дефіси. Я б цього не зробив, якби вводив його в командному рядку, але в GUI я його опустив. Я не знайшов різниці між входом у дві окремі аргументи або одну (як це пропонували деякі повідомлення). Тому використовуйте:

-com.apple.CoreData.SQLDebug 1

а не просто:

com.apple.CoreData.SQLDebug 1

що працювало для мене як в симуляторі, так і в реальному пристрої


3

Зауважте, що ви можете розміщувати різні рівні переданого значення. Які забезпечують все більшу багатослівність.

-com.apple.CoreData.SQLDebug 1
-com.apple.CoreData.SQLDebug 2
-com.apple.CoreData.SQLDebug 3
-com.apple.CoreData.SQLDebug 4 // This will actually show parameter binds ("?")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.