Сбой при увеличении MKMapView с помощью MKPlacemark - PullRequest
0 голосов
/ 17 декабря 2009

Я пытаюсь добавить метку на карту. Метка составлена ​​из адреса, полностью находящегося за пределами адресной книги.

Моя метка появляется на карте, но когда я пытаюсь ущипнуть, чтобы увеличить изображение, я получаю сбой:

*** -[CALayer objectForKey:]: unrecognized selector sent to instance 0x4569dc0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[CALayer objectForKey:]: unrecognized selector sent to instance 0x4569dc0'

Вот как я настраиваю адрес:

id theAddress = [NSDictionary dictionaryWithObjectsAndKeys:
                 [NSString stringWithFormat: @"%@ - %@", theAddress1 ? theAddress1 : @"", theAddress2 ? theAddress2 : @""], kABPersonAddressStreetKey,
                 theCity ? theCity : @"", kABPersonAddressCityKey,
                 theState ? theState : @"", kABPersonAddressStateKey,
                 theZip ? theZip : @"", kABPersonAddressZIPKey,
                 theCountry ? theCountry : @"", kABPersonAddressCountryKey,
                 nil];

Я использую значения в адресной записи, чтобы найти координату для адреса (узнал, как это сделать из этого вопроса и ответа ), затем добавляю ее на свою карту:

[mapView addAnnotation: [[[MKPlacemark alloc] initWithCoordinate: theCoordinate
                                               addressDictionary: theAddress] autorelease]];

Сбой MKPlacemark определенно вызван сбоем, как будто я закомментирую оператор addAnnotation, код не вылетает.

Есть идеи, что происходит? Я предполагаю, что мне не хватает в адресной записи, но сообщение об ошибке действительно бесполезно.

Ответы [ 2 ]

1 голос
/ 18 декабря 2009

Что-то происходит с этим theAddress NSDictionary между его созданием и передачей в метод init MKPlacemark? Я спрашиваю, потому что кажется, что вы зависаете, потому что ваш код пытается обработать объект CALayer, как будто это класс коллекции (то есть, как будто у него есть метод objectForKey:), и единственный класс коллекции, который я вижу там это адресный словарь.

1 голос
/ 18 декабря 2009

Вы перепускаете объект NSDictionary где-то. Вот как вы найдете это:

В меню «Проект» выберите «Редактировать активный исполняемый файл». На вкладке «Аргументы» добавьте элемент в блок «Переменные для установки в среде:» с именем NSZombieEnabled и значением YES.

Счастливая охота на зомби.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...