Как я могу получить значение NSString из метода "(void)" в метод "(BOOL)" в Objective-C? - PullRequest
0 голосов
/ 07 апреля 2011

Я хочу получить значение "city" в "CurrentLocation".

- (void)reverseGeocoder:(MKPlacemark *)placemark {
    NSString *city = [myPlacemark.addressDictionary objectForKey:(NSString*) kABPersonAddressCityKey];
}

- (BOOL)fetchAndParseRSS {        
    NSString *currentLocation; // I want 'city' here.
    return YES;
}

1 Ответ

3 голосов
/ 07 апреля 2011

Почему ваше возвращение аннулируется из сообщения reverseGeocoder?Я написал бы это так:

- (NSString*)reverseGeocoder:(Placemark*)myPlacemark
{
    // assuming myPlacemark is holding a reference to the dictionary (so no need to retain)
    NSString *city = [myPlacemark.addressDictionary objectForKey:kABPersonAddressCityKey];
    return city;
}

-(BOOL)fetchAndParseRss
{
    // you need to get myPlacemark from somewhere, presumably from the geocode request?
    Placemark * myPlacemark = [self getPlacemark];

    NSString * CurrentLocation = [self reverseGeocoder:myPlacemark];
}

В этом коде я предполагаю, что Placemark - это класс с NSDictionary addressDictionary, определенный как свойство.

Если вам действительно нужно это сообщение для возвратаvoid *, тогда вы бросили бы из NSString * в void *, а затем снова вернулись.

- (void*)reverseGeocoder:(Placemark*)myPlacemark
{
    // assuming myPlacemark is holding a reference to the dictionary (so no need to retain)
    NSString *city = [myPlacemark.addressDictionary objectForKey:kABPersonAddressCityKey];
    return (void*)city;
}

Затем бросили бы его обратно в NSString при назначении (не знаю, почему вы это сделали):

-(BOOL)fetchAndParseRss
{
    // you need to get myPlacemark from somewhere, presumably from the geocode request?
    Placemark * myPlacemark = [self getPlacemark];

    NSString * CurrentLocation = (NSString*)[self reverseGeocoder:myPlacemark];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...