Ваше постоянное хранилище в Core Data - это просто файл в файловой системе. Вы получаете доступ к этому файлу и, возможно, создаете его, когда создаете свой стек основных данных. Следующий код напечатает размер постоянного хранилища и свободное пространство файловой системы в байтах:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *persistentStorePath = [documentsDirectory stringByAppendingPathComponent:@"persistentstore.sqlite"];
NSError *error = nil;
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:persistentStorePath error:&error];
NSLog(@"Persistent store size: %@ bytes", [fileAttributes objectForKey:NSFileSize]);
NSDictionary *fileSystemAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:persistentStorePath error:&error];
NSLog(@"Free space on file system: %@ bytes", [fileSystemAttributes objectForKey:NSFileSystemFreeSize]);
Предполагается, что ваше постоянное хранилище имеет имя persistentstore.sqlite
и хранится в каталоге документов для вашего приложения. Если вы не уверены в названии вашего постоянного хранилища, найдите место, куда вы его разместили, и запустите NSPersistentStoreCoordinator. Название магазина должно быть указано где-то в коде.
Обратите внимание, что значения, которые вы возвращаете из словарей файлов и атрибутов файловой системы, являются NSNumbers, поэтому вам нужно будет преобразовать их в скалярные типы, если вы хотите работать с размерами файлов таким образом. Следует помнить, что эти значения выражены в байтах, поэтому для файловых систем с несколькими гигабайтами вы можете столкнуться с ограничениями по размеру числа с 32-разрядными целочисленными типами данных.