Во время этого вынужденного перерыва я работаю над своим приложением и пытаюсь выпустить его для ОС Ma c благодаря Catalyst. Но у меня есть большая проблема с ключевой функцией: я использую NSFileWrapper для (не) сериализации моих файлов Core Data (store, shm, wal). Он отлично работает на iPhone, но на ОС Ma c он не ...
Вот код:
- (NSData *) bundleContents {
// Make sure project has been saved on device
if (!self.project.fileExists) return nil;
// Create the file wrappers
NSFileWrapper *store = [[NSFileWrapper alloc] initWithURL:[self _storeContainerURL] options:0 error:nil];
NSFileWrapper *additionalContent = [[NSFileWrapper alloc] initWithURL:[self _additionalContentContainerURL] options:0 error:nil];
NSMutableDictionary *fileWrappers = [NSMutableDictionary dictionaryWithCapacity:2];
fileWrappers[[self.class _storeContainerName]] = store;
// if (additionalContent) fileWrappers[[self.class _additionalContentContainerName]] = additionalContent;
NSFileWrapper *versionBundle = [[NSFileWrapper alloc] initDirectoryWithFileWrappers:fileWrappers];
// Serialize bundle and compress it
NSLog (@"Store Serialized RAW Data: %d bytes", store.serializedRepresentation.length);
NSLog (@"Contents:");
NSDictionary *wrappers = store.fileWrappers;
for (NSString *filename in wrappers) {
NSFileWrapper *wrapper = wrappers[filename];
NSLog(@"-- %@: %d bytes", filename, wrapper.serializedRepresentation.length);
}
NSLog (@"Bundle: %d bytes", versionBundle.serializedRepresentation.length);
return [versionBundle.serializedRepresentation compressedData];
}
При работе на iPhone, это ведение журнала:
Store Serialized RAW Data: 376969 bytes
Contents:
-- persistentStore-shm: 49244 bytes
-- persistentStore: 163924 bytes
-- persistentStore-wal: 173068 bytes
Bundle: 376969 bytes
Что выглядит нормально (каталог хранилища имеет размер 377 КБ, что соответствует сумме вложенных упаковщиков файлов (файлы store, shm и wal). И конечный результат имеет тот же вес , поскольку на данный момент мы не включаем AdditionalContent (в любом случае он пуст).
Но при работе на Ma c я не получаю те же результаты:
Store Serialized RAW Data: 3387669 bytes
Contents:
-- persistentStore: 151636 bytes
-- persistentStore-wal: 160780 bytes
-- persistentStore-shm: 36956 bytes
Bundle: 9015573 bytes
Вес каталога Store составляет 3,4 МБ (!!), что ни к чему не относится. Его обертки для файлов по-прежнему не превышают 400 КБ. И что еще более странно, конечный выходной файл (Bundle) составляет 9 МБ, тогда как он просто содержит каталог Store и его 3 файла.
Кто-нибудь имеет представление о том, что не так с моим кодом?
Большое вам спасибо! Я застрял на нем со вчерашнего дня ..
Томас