块成功完成后使用变量

时间:2015-03-24 19:12:09

标签: objective-c objective-c-blocks instagram

我现在正在处理一个简单的instagram项目。 我曾多次遇到同样的问题。 要使用Instagram,我使用InstagramKit引擎。它有一些预设(无效),使生活更轻松。但是,我总是遇到同样的问题。

我们说我们得到了这个:

- (void)getSelfUserDetails
{
    [[InstagramEngine sharedEngine] getSelfUserDetailsWithSuccess:^(InstagramUser *userDetail) {

        NSLog(@"%@",userDetail);

    } failure:^(NSError *error) {
   }];
}

这里的userDetail用于" Success"。它很好用。我需要的是在块完成后以某种方式保存它。

我已经尝试了一些事情,从创建属性到存储userDetails直到创建我自己的方法来返回userDetails。保存整数,NSStrings等同样的麻烦。

我想我错过了一些简单的出路。

请告诉我。

3 个答案:

答案 0 :(得分:0)

您需要捕获可以发送响应对象的块中的对象 这可以是自我。

-(void)processUserDetails:(InstagramUser *) userDetail
{
    //....
}

- (void)getSelfUserDetails
{
    [[InstagramEngine sharedEngine] getSelfUserDetailsWithSuccess:^(InstagramUser *userDetail) {
        [self processUserDetails: userDetail];
    } failure:^(NSError *error) {
   }];
}

答案 1 :(得分:0)

您可以创建一个属性来保存您找到的Instagram用户并在成功块中将其分配给它:

 @property (nonatomic) InstagramUser *myUser;


- (void)getSelfUserDetails
{
    [[InstagramEngine sharedEngine] getSelfUserDetailsWithSuccess:^(InstagramUser *userDetail) {

        NSLog(@"%@",userDetail);
        self.myUser = userDetail;
    } failure:^(NSError *error) {
   }];
}

答案 2 :(得分:-1)

这对于NSNotification很有用(因为上面的调用是异步发生的)。

你可以这样称呼:

   [[NSNotificationCenter defaultCenter] 
        postNotificationName:@"TestNotification" 
        object:self
        userInfo:@{ @"userDetail" : userDetail }
   ];

然后使用正在侦听该事件的任何方法获取userInfo数据。