我正在做什么
使用RestKit
,我发出GET
请求以获取包含填充JSON
的用户对象数组的UITableView
对象。我将该数组传递给名为NSArray
的私有users
,该_users
变为_users
(我仍然模糊不清)。这是有效的,表格填充正常。我可以使用其他方法访问[UITableViewCell cellForRowAtIndex]
数组中的各个对象,例如[self.tableView reloadData]
。
但是,同时我将数据拉下来,在我从success
的{{1}}块内部调用[RKObjectManager getObjectsAtPath...]
之前,我想稍微处理单个对象
我的问题
使用[RKObjectManager getObjectsAtPath parameters success failure]
,success
按预期返回RKMappingResult
,然后将其数组传递给_users
,填充UITableView
。这是有效的,但在同一success
块中,我尝试NSLog
' _users[i]
并返回*nil description*
。我知道在某些时候设置了值,因为我通过在另一种方法中调用UITableViewCells
来填充_users[i]
。
希望更多有用的信息
当我从NSLog(@"%@", _users)
块内部success
,并知道数据中有3个对象时,我看到:
(
(null),
(null),
(null)
)
。
我可以提供更多信息,我不知道该放什么。我也可以显示我的代码,但它基本上不属于RestKit文档。
用户对象
@interface User : NSObject
@property (nonatomic, strong) NSString *id;
@property (nonatomic, strong) NSString *email;
@property (nonatomic, strong) NSString *username;
@property (nonatomic, strong) NSString *fullName;
@property (nonatomic, strong) NSString *bio;
@property (nonatomic) NSDate *dob;
@property (nonatomic, strong) NSString *avatar;
@property (nonatomic, strong) NSString *avatarMeta;
@property (nonatomic, strong) NSString *location;
@property (nonatomic, strong) NSURL *url;
@property (nonatomic, strong) NSString *enabled;
@end
RKObjectManager示例
*注意 - 出于安全原因,已删除了一些部分
- (void)loadUsers {
NSMutableDictionary *params = [[NSMutableDictionary alloc] initWithDictionary:@{@"token": self.token}];
NSString *path = @"/api/v1/g/feed";
if ( self.cursor ) {
path = [NSString stringWithFormat:@"%@/%@", path, self.cursor];
}
[[RKObjectManager sharedManager] getObjectsAtPath:path
parameters:params
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
_users = mappingResult.array;
NSLog(@"Last User: %@",_users[0]); // *nil description*
NSLog(@"Array: %@", _users); // ((null),(null),(null),(null),(null),(null),(null),(null),(null),(null))
[self.tableView reloadData]; // table gets populated correctly
}
failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"No feed available: %@", error);
}];
}