gpt4 book ai didi

ios - 从核心数据数据库检索数据的替代方法 - ios

转载 作者:行者123 更新时间:2023-11-28 23:12:53 26 4
gpt4 key购买 nike

我在从数据库中检索数据时遇到性能问题。

现在,我就是这样做的。

+(NSMutableArray *) searchObjectsInContext: (NSString*) entityName : (NSPredicate *) predicate : (NSString*) sortKey : (BOOL) sortAscending 

{
i3EAppDelegate *appDelegate = (i3EAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:context];
[request setEntity:entity];
[request setFetchBatchSize:5];
//[request setFetchLimit:10];
[request setReturnsObjectsAsFaults:NO];

// If a predicate was passed, pass it to the query
if(predicate != nil)
{
[request setPredicate:predicate];
}

// If a sort key was passed, use it for sorting.
if(sortKey != nil)
{
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:sortAscending];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];
}

NSError *error;
NSMutableArray *mutableFetchResults = [[context executeFetchRequest:request error:&error] mutableCopy];

if (mutableFetchResults == nil) {

// Handle the error.

// NSLog(@"Unresolved error %@, %@", error, [error userInfo]);

exit(-1); // Fail
}

[request release];
//[context release];
appDelegate = nil;

return [mutableFetchResults autorelease];

}

有没有其他方法可以更快地执行相同的操作?

如果是这样,如果有人能帮助我解决这个问题就太好了。

最佳答案

有几个问题:

  1. 您没有谓词。因此,您正在检索整个表格。这可能是您最大的问题。
  2. 您正在检索时加载所有完整对象。这将大大减慢速度。如果您不需要实现整个对象,那么我建议您重新打开 -setReturnsObjectsAsFaults:
  3. -setFetchBatchSize: 的设置可能没有达到您预期的效果。如果您想限制返回的结果数量,请使用 -setFetchLimit:
  4. 制作 NSArray 结果的 -mutableCopy 没有任何值(value)。我怀疑你是从书中学来的,建议你停止这样做。

关于ios - 从核心数据数据库检索数据的替代方法 - ios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com