Tag: completionhandler

使用reverseGeocodeLocation设置地址string:并从方法返回

我尝试本地化一个地址string的开始和结束点,以便我可以将其存储到NSUserDefaults 。 问题是该方法继续执行,并没有设置我的variables。 NSLog(@"Begin"); __block NSString *returnAddress = @""; [self.geoCoder reverseGeocodeLocation:self.locManager.location completionHandler:^(NSArray *placemarks, NSError *error) { if(error){ NSLog(@"%@", [error localizedDescription]); } CLPlacemark *placemark = [placemarks lastObject]; startAddressString = [NSString stringWithFormat:@"%@ %@\n%@ %@\n%@\n%@", placemark.subThoroughfare, placemark.thoroughfare, placemark.postalCode, placemark.locality, placemark.administrativeArea, placemark.country]; returnAddress = startAddressString; //[self.view setUserInteractionEnabled:YES]; }]; NSLog(returnAddress); NSLog(@"Einde"); 这是我的应用程序debugging器显示的内容: 开始 einde 例如,如果我的位置的地址是“Mainstreet 32​​,CITY”。 那么我想看到的是以下几点: 开始 Mainstreet 32​​,CITY […]

从块内部返回方法对象

我想知道如何正确地做到以下几点:我有一个方法是返回一个NSData对象。 它从UIDocument获取NSData对象。 NSData对象可以变大,所以我想确保它在响应开始之前完全加载。 因此,我想从块内部返回方法的值。 所以像这样的东西: – (NSData*)getMyData { MyUIDocument *doc = [[MyUIDocument alloc] initWithFileURL:fileURL]; [doc openWithCompletionHandler:^(BOOL success) { if (success) { return doc.myResponseData; // this is to be the return for the method not the block } }]; } 这会导致错误,因为return显然是指block的return 。 我怎样才能做到这一点,而不必做一个线程阻塞等待/ while循环? 谢谢。