2012-07-03 126 views
0

当我从Coredata Entity获取唯一用户数据时使用NSPredicate时,应用程序崩溃。但是,没有错误日志。这是我正在使用的代码,应用程序崩溃在iPhone应用程序中使用NSPredicate?

if (managedObjectContext == nil) 
{ 
    managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
} 


NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Name==%@",selectedUserName]; 
NSFetchRequest *fectchreq = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entitydes = [NSEntityDescription entityForName:@"ALLData" inManagedObjectContext:managedObjectContext]; 
[fectchreq setEntity:entitydes]; 
[fectchreq setPredicate:predicate]; 

NSSortDescriptor *sortdes = [[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES]; 
NSArray *sortdesarray = [[NSArray alloc] initWithObjects:sortdes, nil]; 
[fectchreq setSortDescriptors:sortdesarray]; 
[sortdes release]; 
[sortdesarray release]; 
NSError *error = nil; 
//NSMutableArray *storeddata = [[[managedObjectContext executeFetchRequest:fectchreq] error:&error] mutableCopy]; 
NSArray *storeddata = [managedObjectContext executeFetchRequest:fectchreq error:&error]; 
//[fectchreq release]; 
NSLog(@"StoreData : %@, count : %d",storeddata, [storeddata count]); 

任何人都可以请帮忙解决这个问题吗?提前致谢。

+2

“executeFetchRequest:error:”的第二个参数是错误对象的指针指针。你应该像这样用&符号传递它:'... executeFetchRequest:request error:&error]'。 – Eimantas

+0

@Eimantas是的,我已经在我的代码中试过了你的话。应用程序仍然崩溃。你能帮我么?谢谢。 – Gopinath

回答

0
NSError *error; 
NSMutableArray *storeddata = [managedObjectContext executeFetchRequest:fectchreq error:error]; 

您需要将此代码更改为:

NSError *error = nil; 
NSArray *storeddata = [managedObjectContext executeFetchRequest:fectchreq error:&error]; 

原因: 错误论点应该作为一个指针传递,是因为该声明是-executeFetchRequest:(NSFetchedRequest *)request error:(NSError **)error; 另外这个方法返回NSArray,不NSMutableArray - 你必须得到关于此的编译器警告......

+0

是的,我已根据您的建议更改了代码。仍然该应用程序在executeFetchRequest:行中崩溃。你可以帮我吗?我将发布最近的代码。谢谢。 – Gopinath

+0

你必须得到某种错误..? – graver

+0

日志中没有错误。当应用程序进入executeFetchRequest:行时,应用程序崩溃。没有错误日志。你能帮我么?谢谢。 – Gopinath