IOS /核心数据:从实体中检索单个用户对象

时间:2016-04-26 23:37:44

标签: ios core-data

我正在尝试为主要应用用户检索用户对象,以便能够访问用户的姓名,照片等。

以下代码返回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

1 个答案:

答案 0 :(得分:1)

如果[匹配计数]>您的用户将保持为零的一种方式1是正确的,因此请检查您是否制作了具有相同ID的重复用户对象