如何检查Core Data正在使用多少磁盘空间?

时间:2014-07-29 19:12:54

标签: ios objective-c sqlite core-data

我正在编写一个使用sqlite类型持久存储的核心数据应用程序,我知道这些表和数据存储在设备的某个位置。

是否可以检查Core Data用于存储对象的内存量?也许通过检查sqlite db文件的大小?

如果可能,怎么样?我真的可以用你的想法

1 个答案:

答案 0 :(得分:0)

这取决于您使用的xcode

ios8

它存储在某个地方

  

/ Library / Developer / CoreSimulator / Devices /(数字和   信件)/数据/容器/数据/应用/(数字和数字)   字母)/文档/

(数字和字母)代表一个应用程序/计算机独有的文件夹,但如下所示:779AE2245-F8W2-57A9-8C6D-98643B1CF01A

您可以将以下方法写入appDelegate.m,

方法和NSLogging返回路径,如下所示:

// Returns the URL to the application's Documents directory.
- (NSURL *)applicationDocumentsDirectory
{
    NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory  inDomains:NSUserDomainMask] lastObject]);

    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
 }

它将在模拟器上为您提供document目录网址。然后转到查找程序Cmd+Shift+G并在此处键入此地址,您可以导航到核心数据用于存储数据的sqlite个文件你的应用程序

表示Xcode 3,Xcode 4和Xcpde 5存储在

  

〜/ Library / Application Support / iPhone Simulator / [SDK   版本] / Applications / [App GUID] / Documents

编辑您可以使用以下代码检查sqlite db核心数据的大小。我认为它适用于所有情况,但我不确定,也不会验证它的准确性。但我认为这是一种提供以编程方式检查coredata db大小的顶级细节的方法

-(NSUInteger)calculate{

    //Check where you are making the sqlite
    NSURL *url = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"yourPersistentStoreName"];
    NSUInteger sizeOfData = [[NSData dataWithContentsOfURL:url] length];
    NSLog(@"sizeOfDAta in bytes %lu",(unsigned long)sizeOfData);

    return sizeOfData; 
}