2014-10-19 46 views
0

我使用庫soap這個函數在nsdictionary中的返回值我在將它關閉後將它改爲nsarray;}並鍵入nslog它給出了nsarray = null但是如果我把它在方法關閉之前給方法提供數據在同一個方法中查看變量= null ios

- (void)showlinks 
{   
    SYSoapClient *show_links_obj = [SYSoapClient new]; 
    links_tags = [[NSMutableArray alloc] initWithObjects:@"empid", @"type", nil]; 
    links_vars = [[NSMutableArray alloc] initWithObjects:txt_username, type_user, nil]; 
    [show_links_obj callSoapServiceWithParameters__functionName:@"getlinks" 
                  tags:links_tags 
                  vars:links_vars 
                 callback:^(NSDictionary *result, 
                    BOOL response) 
    { 
     link_raw_Data = [result allValues]; 
     link_con_Data = [link_raw_Data componentsJoinedByString:@""]; 
     //NSArray *links = [con_Data componentsSeparatedByString:@"@"]; 
     links = [link_con_Data componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"@^"]]; 
     NSUInteger x = links.count; 
     NSLog(@"%@",link_raw_Data); 
     //NSLog(@"%d",x); 
     //NSLog(@"%@",links[5]); 
    }]; 
    NSLog(@"%@",links[5]); 
} 
+0

第二次nslog(@「%@」,link [5]);給null null – 2014-10-19 11:32:21

回答

0

通過對soap服務的回調參數判斷,這是一個異步調用。這意味着它將立即返回,在後臺線程上進行網絡連接,並在稍後完成時調用回調。

由於它是異步的,並且不等待/阻塞,所以在從soap服務獲取任何數據之前,將會執行日誌語句。

+0

我該怎麼做? – 2014-10-19 22:23:15

+0

這已經發生了。如果你想在soap調用完成時運行一些代碼,那麼你應該在回調中(塊) – 2014-10-20 08:56:54