我正在使用coredata(第一次使用)保存大量的数据(图像,视频路径,html文本) 当我使用prdicate提取数据fetchRequest NSArray内存使用增加10到15MB每次。有时它会跨越400-500mb..app减慢速度,但不会崩溃coredata数据提取增加内存使用ios
我想知道,它通常在核心数据库中吗? 是否有任何方法来获取数据而不增加内存使用量?
如果不是那么我该如何解决这个问题。 如果有人知道原因或任何想法请分享。
我的代码如下所示
-(void)GetDatafromPrimaryKey:(NSString *)PrimaryKeyTxt EntityName:(NSString *)EntityName {
NSError *error = nil;
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:EntityName inManagedObjectContext: context];
[fetch setEntity:entityDescription];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"primaryKey == %@",PrimaryKeyTxt]];
// [fetch setIncludesPropertyValues:NO];
[fetch setShouldRefreshRefetchedObjects:NO];
chatAry = [context executeFetchRequest:fetch error:&error];
NSLog(@"---> %lu",(unsigned long)chatAry.count);
if (error != nil) {
// Deal with failure
}
else {
}
}
您应该将图像和视频保存在应用程序目录中而不是核心数据中,并将该图像视频的路径URL保存在核心数据中......其他方式将大量图像和视频保存在核心数据中会消耗更多内存,内存中的图像和视频一次将其保存到核心数据 –
@Sharma sir,我之前使用过DocumentsDirectory ..但结果相同。内存增加:( –
使用'sqlite'是推荐的方式来处理应用程序内的大量数据,它也是最喜欢的方式。 – vaibhav