Почему происходит сбой этого кода? - PullRequest
1 голос
/ 13 марта 2011

Я загружаю XML-файл , содержащий около 600 небольших наборов данных, что составляет около 10000 строк.Данные используются в качестве точек аннотации на карте.Я использую библиотеку TouchXML для обработки XML.Вот мой код:

NSData *XMLData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://skidmoreapps.com/darksky/fetch_info.php"]];
CXMLDocument *doc = [[[CXMLDocument alloc] initWithData:XMLData options:0 error:nil] autorelease];
NSArray *nodes = [doc nodesForXPath:@"//site" error:nil];

for (CXMLElement *node in nodes)
{
    ObservationSite *site = [ObservationSite mapAnnotation];
    [site setCoordinate:CLLocationCoordinate2DMake([[[[node elementsForName:@"lat"] objectAtIndex:0] stringValue] floatValue], [[[[node elementsForName:@"lng"] objectAtIndex:0] stringValue] floatValue])];
    [site setTitle:[[[node elementsForName:@"name"] objectAtIndex:0] stringValue]];
    [site setAddress:[[[node elementsForName:@"address"] objectAtIndex:0] stringValue]];
    [site setUrl:[[[node elementsForName:@"name_l"] objectAtIndex:0] stringValue]];
    [site setAffiliation:[[[node elementsForName:@"affil"] objectAtIndex:0] stringValue]];
    [site setAffiliationUrl:[[[node elementsForName:@"affil_l"] objectAtIndex:0] stringValue]];
    [site setOwner:[[[node elementsForName:@"owner"] objectAtIndex:0] stringValue]];
    [site setFee:[[[node elementsForName:@"fee"] objectAtIndex:0] stringValue]];
    [site setAccess:[[[node elementsForName:@"access"] objectAtIndex:0] stringValue]];
    [site setSky:[[[node elementsForName:@"sky"] objectAtIndex:0] stringValue]];
    [site setWeatherUrl:[[[node elementsForName:@"wx_l"] objectAtIndex:0] stringValue]];
    [site setPads:[[[node elementsForName:@"pads"] objectAtIndex:0] stringValue]];
    [site setParking:[[[node elementsForName:@"parking"] objectAtIndex:0] stringValue]];
    [site setRestrooms:[[[node elementsForName:@"b_rooms"] objectAtIndex:0] stringValue]];
    [site setSleep:[[[node elementsForName:@"sleep"] objectAtIndex:0] stringValue]];
    [site setNotes:[[[node elementsForName:@"notes"] objectAtIndex:0] stringValue]];

    [map addAnnotation:site];
}

После загрузки файла XML происходит сбой с этой ошибкой:

Хостинг imgur.com

1 Ответ

2 голосов
/ 14 марта 2011

На скриншоте видно, что происходит mutateError. Это может произойти во время быстрого перечисления, если вы измените то, что перечислите. Что-нибудь происходит, что изменит коллекцию [self children] в то же время, когда выполняется ваше быстрое перечисление? Например, несколько потоков делают что-то?

Если продолжить работу отладчика и разрешить полное исключение, что вы видите на консоли?

Кстати, ваш скрипт .php, похоже, возвращает недействительный документ XML - некоторые символы не являются допустимыми UTF8, насколько это касается моего браузера. Может быть, не проблема, но стоит исправить и исключить.

...