RKMappingResult有对象,但它们NSLog为null

时间:2015-05-05 05:11:42

标签: ios objective-c rest restkit objective-c-blocks

我正在做什么

使用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);
                                          }];
}

0 个答案:

没有答案