Когда я отлаживаю Core Data, я получаю SQLite-файл из приложения на своем iPhone. SQLite не имеет данных, кроме версии. Я уверен, что сохранил свои данные с NSManagedObject
, и я также могу получить данные обратно через код. Я даже могу открыть приложение. Журналы показывают, что данные были вставлены в файл SQLite.Основные данные SQLite File Нет данных
Ниже показаны первые данные времени сохраняется в файле SQLite:
- (void)write
{
NSEntityDescription *entity = [NSEntityDescription entityForName:NSStringFromClass([Network class]) inManagedObjectContext: [AppDelegate sharedAppDelegate].managedObjectContext];
Network *network = (Network*)[[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:self.managedObjectContext];
network.name = @"network";
[self.managedObjectContext save:nil];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self write];
return YES;
}
Ниже приведен журнал от отладки Core Data:
2015-06-15 13:10:28.198 SmartLight[1226:419855] CoreData: annotation: Connecting to sqlite database file at "/var/mobile/Containers/Data/Application/FB384AE0-5DC5-4924-8F58-0B944AD63F03/Documents/LightModel.sqlite"
2015-06-15 13:10:28.204 SmartLight[1226:419855] CoreData: annotation: creating schema.
2015-06-15 13:10:28.205 SmartLight[1226:419855] CoreData: sql: pragma page_size=4096
2015-06-15 13:10:28.206 SmartLight[1226:419855] CoreData: sql: pragma auto_vacuum=2
2015-06-15 13:10:28.219 SmartLight[1226:419855] CoreData: sql: BEGIN EXCLUSIVE
2015-06-15 13:10:28.220 SmartLight[1226:419855] CoreData: sql: SELECT TBL_NAME FROM SQLITE_MASTER WHERE TBL_NAME = 'Z_METADATA'
2015-06-15 13:10:28.222 SmartLight[1226:419855] CoreData: sql: CREATE TABLE ZBLUEDEVICE (Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZDEVICEID INTEGER, ZDEVICETYPE INTEGER, ZMAXDEVICEID INTEGER, ZNETWORKID INTEGER, ZNETWORK INTEGER, Z4REMOTERS INTEGER, Z4LIGHTS INTEGER, ZADDRESS VARCHAR, ZNAME VARCHAR)
2015-06-15 13:10:28.226 SmartLight[1226:419855] CoreData: sql: CREATE INDEX ZBLUEDEVICE_ZNETWORK_INDEX ON ZBLUEDEVICE (ZNETWORK)
2015-06-15 13:10:28.227 SmartLight[1226:419855] CoreData: sql: CREATE INDEX ZBLUEDEVICE_Z4REMOTERS_INDEX ON ZBLUEDEVICE (Z4REMOTERS)
2015-06-15 13:10:28.229 SmartLight[1226:419855] CoreData: sql: CREATE INDEX ZBLUEDEVICE_Z4LIGHTS_INDEX ON ZBLUEDEVICE (Z4LIGHTS)
2015-06-15 13:10:28.230 SmartLight[1226:419855] CoreData: sql: CREATE INDEX ZBLUEDEVICE_Z_ENT_INDEX ON ZBLUEDEVICE (Z_ENT)
2015-06-15 13:10:28.231 SmartLight[1226:419855] CoreData: sql: CREATE TABLE ZNETWORK (Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZMAXDEVICEID INTEGER, ZNETWORKID INTEGER, ZNAME VARCHAR, ZPASSWORD VARCHAR)
2015-06-15 13:10:28.232 SmartLight[1226:419855] CoreData: annotation: Creating primary key table.
2015-06-15 13:10:28.233 SmartLight[1226:419855] CoreData: sql: CREATE TABLE Z_PRIMARYKEY (Z_ENT INTEGER PRIMARY KEY, Z_NAME VARCHAR, Z_SUPER INTEGER, Z_MAX INTEGER)
2015-06-15 13:10:28.234 SmartLight[1226:419855] CoreData: sql: INSERT INTO Z_PRIMARYKEY(Z_ENT, Z_NAME, Z_SUPER, Z_MAX) VALUES(1, 'BlueDevice', 0, 0)
2015-06-15 13:10:28.235 SmartLight[1226:419855] CoreData: sql: INSERT INTO Z_PRIMARYKEY(Z_ENT, Z_NAME, Z_SUPER, Z_MAX) VALUES(2, 'Light', 1, 0)
2015-06-15 13:10:28.236 SmartLight[1226:419855] CoreData: sql: INSERT INTO Z_PRIMARYKEY(Z_ENT, Z_NAME, Z_SUPER, Z_MAX) VALUES(3, 'Remoter', 1, 0)
2015-06-15 13:10:28.236 SmartLight[1226:419855] CoreData: sql: INSERT INTO Z_PRIMARYKEY(Z_ENT, Z_NAME, Z_SUPER, Z_MAX) VALUES(4, 'Network', 0, 0)
2015-06-15 13:10:28.237 SmartLight[1226:419855] CoreData: sql: CREATE TABLE Z_METADATA (Z_VERSION INTEGER PRIMARY KEY, Z_UUID VARCHAR(255), Z_PLIST BLOB)
2015-06-15 13:10:28.239 SmartLight[1226:419855] CoreData: sql: SELECT TBL_NAME FROM SQLITE_MASTER WHERE TBL_NAME = 'Z_METADATA'
2015-06-15 13:10:28.240 SmartLight[1226:419855] CoreData: sql: DELETE FROM Z_METADATA WHERE Z_VERSION = ?
2015-06-15 13:10:28.241 SmartLight[1226:419855] CoreData: sql: INSERT INTO Z_METADATA (Z_VERSION, Z_UUID, Z_PLIST) VALUES (?, ?, ?)
2015-06-15 13:10:28.242 SmartLight[1226:419855] CoreData: sql: COMMIT
2015-06-15 13:10:28.256 SmartLight[1226:419855] CoreData: sql: pragma journal_mode=wal
2015-06-15 13:10:28.271 SmartLight[1226:419855] CoreData: sql: pragma journal_mode=wal
2015-06-15 13:10:28.272 SmartLight[1226:419855] CoreData: sql: pragma cache_size=200
2015-06-15 13:10:28.273 SmartLight[1226:419855] CoreData: sql: SELECT Z_VERSION, Z_UUID, Z_PLIST FROM Z_METADATA
2015-06-15 13:10:32.569 SmartLight[1226:419855] CoreData: sql: BEGIN EXCLUSIVE
2015-06-15 13:10:32.570 SmartLight[1226:419855] CoreData: sql: SELECT Z_MAX FROM Z_PRIMARYKEY WHERE Z_ENT = ?
2015-06-15 13:10:32.571 SmartLight[1226:419855] CoreData: sql: UPDATE Z_PRIMARYKEY SET Z_MAX = ? WHERE Z_ENT = ? AND Z_MAX = ?
**2015-06-15 13:10:32.572 SmartLight[1226:419855] CoreData: sql: COMMIT
2015-06-15 13:10:32.578 SmartLight[1226:419855] CoreData: sql: BEGIN EXCLUSIVE
2015-06-15 13:10:32.580 SmartLight[1226:419855] CoreData: sql: INSERT INTO ZNETWORK(Z_PK, Z_ENT, Z_OPT, ZMAXDEVICEID, ZNAME, ZNETWORKID, ZPASSWORD) VALUES(?, ?, ?, ?, ?, ?, ?)
2015-06-15 13:10:32.581 SmartLight[1226:419855] CoreData: sql: COMMIT**
2015-06-15 13:10:32.584 SmartLight[1226:419855] CoreData: sql: pragma page_count
2015-06-15 13:10:32.585 SmartLight[1226:419855] CoreData: annotation: sql execution time: 0.0007s
2015-06-15 13:10:32.585 SmartLight[1226:419855] CoreData: sql: pragma freelist_count
2015-06-15 13:10:32.586 SmartLight[1226:419855] CoreData: annotation: sql execution time: 0.0005s
Журнал показывает, что столбец сети вставлено.
Вот Считанные данные из основных данных после того, как приложение закрывается и открывается снова:
- (void)read
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:NSStringFromClass([Network class])];
Network *network = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil].firstObject;
NSLog(@"%@", network);
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self read];
return YES;
}
Ответ журнала показывает:
2015-06-15 13:16:12.344 SmartLight[1234:421137] CoreData: annotation: Connecting to sqlite database file at "/var/mobile/Containers/Data/Application/7A74B12A-6481-4B10-9307-FC7A92DD1912/Documents/LightModel.sqlite"
2015-06-15 13:16:12.347 SmartLight[1234:421137] CoreData: sql: SELECT TBL_NAME FROM SQLITE_MASTER WHERE TBL_NAME = 'Z_METADATA'
2015-06-15 13:16:12.350 SmartLight[1234:421137] CoreData: sql: pragma journal_mode=wal
2015-06-15 13:16:12.350 SmartLight[1234:421137] CoreData: sql: pragma cache_size=200
2015-06-15 13:16:12.351 SmartLight[1234:421137] CoreData: sql: SELECT Z_VERSION, Z_UUID, Z_PLIST FROM Z_METADATA
2015-06-15 13:16:12.352 SmartLight[1234:421137] CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZMAXDEVICEID, t0.ZNAME, t0.ZNETWORKID, t0.ZPASSWORD FROM ZNETWORK t0
2015-06-15 13:16:12.353 SmartLight[1234:421137] CoreData: annotation: sql connection fetch time: 0.0004s
2015-06-15 13:16:12.353 SmartLight[1234:421137] CoreData: annotation: total fetch execution time: 0.0010s for 1 rows.
2015-06-15 13:16:20.603 SmartLight[1234:421137] <Network: 0x17015bf90> (entity: Network; id: 0xd000000000040000 <x-coredata://500A532B-CA76-48FB-B0C2-5FE0AFFAB454/Network/p1> ; data: <fault>)
Журнал показывает, что данные были успешно сохранены , Однако файл SQLite из каталога Documents не нашел данные, которые я сохранил, за исключением данных, сохраненных системой (например, версии).
В таблице ZNETWORK должен имеет столбец.
Может ли кто-нибудь объяснить, что происходит, или почему я не могу найти данные в файле SQLite?
Вы точно знаете, что вы читаете верный файл sqlite? закройте свой инструмент редактирования sqlite и откройте его – samir
Да, у меня есть тест много раз – user3804862