2016-04-26 99 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製作重複的用戶對象