2016-04-26 101 views
0

获取单个用户对象我想要检索的主要应用程序用户的用户对象,以访问用户的姓名,照片等IOS /核心数据:从实体

下面的代码返回null。这是检索对象的有效代码吗?如果没有,可能是用户信息没有正确地存储在核心数据中,如果只是你可以轻松查看底层的sql-lite文件 - 但这是另一回事。但是,我想排除检索用户对象的代码的问题。

- (User *)getUserInfo:(NSNumber *)userid 
inManagedObjectContext:(NSManagedObjectContext *)context 
{ 
    User *user = nil; 
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"]; 
    request.predicate = [NSPredicate predicateWithFormat:@"userid == %@",userid]; 
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"userid" ascending:YES]; 
    request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 
    NSError *error = nil; 
    NSArray *matches = [_managedObjectContext executeFetchRequest:request error:&error]; 
    if (!matches || [matches count] > 1) { 
     // handle error 
     } else { 
     user = [matches lastObject]; 
    } 
    return user; 
} 
//This is returning null currently. Is there an error visible somewhere? 

编辑:

这是它是如何叫:

//in viewdidload 
    _managedObjectContext = [myModel sharedInstance].managedObjectContext; 
    NSNumber *useridnum =[[NSUserDefaults standardUserDefaults] valueForKey:@"userid"]; 
    User *user = [self getDemoInfo:useridnum 
      inManagedObjectContext:_managedObjectContext]; 

    NSLog(@"user is%@",user);//logs as null 
+0

是您的_managedObjectContext是否正确?另外,检查是否错误是零,如果不打印error.description –

+0

上述方法从viewdidload调用,我认为这是正确的。 – zztop

+0

你检查过那个错误是否为零? –

回答

1

一种方式用户将保持为零,如果[匹配计数> 1是真实的,所以请你没使用相同的ID制作重复的用户对象