2014-10-19 57 views
-1

我正在努力從塊中獲取變量。似乎是一個非常基本的東西,但我無法弄清楚!我怎樣才能訪問它?例如usercity出了塊? Usercity在.h中聲明爲NSString。Objective-C從塊中獲取變量

[ceo reverseGeocodeLocation: loc completionHandler: 
^(NSArray *placemarks, NSError *error) { 


    CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
    //NSLog(@"placemark %@",placemark); 
    //String to hold address 
    //NSString *locatedAt = [[placemark.addressDictionary valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "]; 
    //NSLog(@"addressDictionary %@", placemark.addressDictionary); 

    //NSLog(@"placemark %@",placemark.region); 
    NSLog(@"Land %@",placemark.country); // Give Country Name 
    NSLog(@"City %@",placemark.locality); // Extract the city name 
    NSLog(@"Adresse %@",placemark.name); 
    //NSLog(@"location %@",placemark.ocean); 
    NSLog(@"Zip %@",placemark.postalCode); //ZipCode 
    NSLog(@"sonstiges %@",placemark.subLocality); 


    //Save values in variables 
    usercountry = placemark.country; 
    usercity = placemark.locality; 
    userzip = placemark.postalCode; 
    NSLog(@"usercity: %@",usercity); 

    //NSLog(@"location %@",placemark.location); 



} 

]; 
+1

這與Xcode完全沒有任何關係。 – 2014-10-19 08:16:35

+0

這一個解決我的問題: http://stackoverflow.com/questions/14346516/xcode-ios-clgeocoder-reversegeocodelocation-return-addressstring – tyler 2014-10-19 22:13:36

回答

0

您在代碼塊中的代碼必須將usercity存儲在您想要的位置。你不能「取出某個塊」​​,塊中的代碼必須這樣做。

你知道一個塊可以訪問周圍方法中的所有變量,不是嗎?

+0

是的,我知道,它可以訪問它周圍的變量。但是當我在班級的任何地方打印用戶城市時,它是空的?! – tyler 2014-10-19 08:33:05

1

這是你在找什麼?

__block NSString *userCity; 
[ceo reverseGeocodeLocation: loc completionHandler:^(NSArray *placemarks, NSError *error) { 

    CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
    ... 
    userCity = placemark.locality; 

}]; 

但是,如果你想真正能夠檢查塊之外它的價值,你就必須做完成處理器更新值打完。也許使它成爲一個財產,即。 self.userCity

+0

我做了它的財產。像self.userCity = placemark.locality。但是當我在該塊後面打印該屬性時,它仍然爲空。我不太瞭解街區,但我只想讓我的項目中的用戶可以進入城市。不僅在塊中。當我在「NSLog」(「用戶城市%@」,self.usercity)塊之後打印我的城市時;並且即使以相同的方式嵌入塊中,塊之後的打印首先被打印,其次打印在這個區域內,就像其他的一樣,所以在這種情況下,我可以想象,當我在城外打印城市時,這個街區沒有運行, – tyler 2014-10-19 20:04:00

+1

您應該瞭解更多關於街區的信息。傳遞該塊以異步執行(稍後),在此時運行的代碼的其餘部分。 – hlfcoding 2014-10-19 20:06:57

+0

我該怎麼做? – tyler 2014-10-19 20:08:14