DaffodilGirl 2012-12-24 01:54 采纳率: 0%
浏览 3607
已采纳

返回fetch请求方法的对象时出错

在应用自动升级为新的ARC,从CoreData中拿数据时出现错误,下面是方法代码:

NSArray *userinfo =[self checkData:self.username];

//This return fault data in array
-(NSArray*) checkData:(NSString*)loginUsername{
  id appDelegate = (id)[[UIApplication sharedApplication] delegate]; 

  NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init];
  [managedObjectContext setPersistentStoreCoordinator:[[appDelegate managedObjectContext] persistentStoreCoordinator]];

  NSFetchRequest *request = [[NSFetchRequest alloc] init];
  NSEntityDescription *userEntity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:managedObjectContext];

  [request setEntity:userEntity];
  [request setPredicate:[NSPredicate predicateWithFormat:@"userName == %@",loginUsername ]];
  NSError *error;

  NSArray *userInfo =[managedObjectContext executeFetchRequest:request error:&error];
  //NSLog(@"Number of account%@",[userInfo valueForKey:@"userName"]);

  if ([userInfo valueForKey:@"userName"] != nil && userInfo.count != 0)
    return userInfo;
  else return nil;
}

出错日志:

<User: 0x12b73db0> (entity: User; id: 0x12b6dc20 <x-coredata://7388F0B7-E583-4BF0-BE64-08AD014EC583/User/p2> ; data: <fault>)
2012-12-23 10:09:18.802 test[78839:c07] -[NSNull isEqualToString:]: unrecognized selector sent to instance 0x28ac678
2012-12-23 10:09:18.803 test[78839:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull isEqualToString:]: unrecognized selector sent to instance 0x28ac678'
*** First throw call stack:
(0x277b012 0x2018e7e 0x28064bd 0x276abbc 0x276a94e 0xb4028 0x3e3be 0x1812e59 0x1810f22 0x181216a 0x1810edd 0x1811055 0x175e338 0x5d3a81 0x5d2d33 0x610e3a 0x271d8fd 0x6114bc 0x611435 0x4fb3a0 0x26fef3f 0x26fea39 0x2721734 0x2720f44 0x2720e1b 0x31027e3 0x3102668 0xc5465c 0x2806 0x2735 0x1)
libc++abi.dylib: terminate called throwing an exception
  • 写回答

1条回答 默认 最新

  • Mr_me 2012-12-24 02:51
    关注

    换成用AppDelegate的managedObjectContext:

    id appDelegate = (id)[[UIApplication sharedApplication] delegate]; 
    
    NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init];
    [managedObjectContext setPersistentStoreCoordinator:[[appDelegate managedObjectContext] persistentStoreCoordinator]];
    

    把这些代码换成:

    NSManagedObjectContext *managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示