我试图将[[RKObjectManager sharedManager] getObjectsAtPath:@"/groups" ...
的结果存储在数组中,并且想知道为什么数组未将对象存储在getObjectsAtPath
之外?
@property (strong, nonatomic) NSArray *groups;
- (void)loadGroups
{
[[RKObjectManager sharedManager] getObjectsAtPath:@"/groups" parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
[self.refreshControl endRefreshing];
self.groups = mappingResult.array;
NSLog(@"GROUP COUNT INSIDE %@", [NSString stringWithFormat:@"%d", _groups.count]);
NSLog(@"GROUP NAME INSIDE %@",[self.groups objectAtIndex:0]);
NSLog(@"GROUP NAME INSIDE %@",[[self.groups objectAtIndex:0] valueForKey:@"groupName"]);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
[self.refreshControl endRefreshing];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"An Error Has Occurred" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}];
NSLog(@"GROUP NAME OUTSIDE %@",[self.groups objectAtIndex:0]);
NSLog(@"GROUP NAME OUTSIDE %@",[[self.groups objectAtIndex:0] valueForKey:@"groupName"]);
NSLog(@"GROUP COUNT OUTSIDE %@", [NSString stringWithFormat:@"%d", self.groups.count]);
}
NSLOG输出:
2013-11-10 12:04:33.281 Test[64618:11603] GROUP NAME OUTSIDE (null)
2013-11-10 12:04:33.294 Test[64618:11603] GROUP NAME OUTSIDE (null)
2013-11-10 12:04:33.345 Test[64618:11603] GROUP COUNT OUTSIDE 0
2013-11-10 12:04:33.482 Test[64618:11603] GROUP COUNT INSIDE 1
2013-11-10 12:04:33.483 Test[64618:11603] GROUP NAME INSIDE <NSManagedObject: 0x957b990> (entity: Group; id: 0x7693570 <x-coredata://174C4545-59FF-4A3A-A3B5-29520354ADD9/Group/p1> ; data: {
groupDescription = "Admin Group";
groupId = 1;
groupName = Admin;
})
2013-11-10 12:04:33.484 Test[64618:11603] GROUP NAME INSIDE Admin
最佳答案
当您说“在getObjectsAtPath之外”时,您实际上是在成功块之外。原因很简单,成功块尚未运行,因此您的媒体资源尚未设置值。这是因为对getObjectsAtPath
的调用是异步的,可能需要数十秒才能获取请求的数据。在调用成功块之前,您不应期望数据可用。 (调用getObjectsAtPath
在完成之前不会阻塞线程)。