1

約600の小さなデータセット(約10,000行)を含むXMLファイルを読み込んでいます。データは、マップ上の注釈ポイントとして使用されています。TouchXMLXMLを処理するためにライブラリを使用しています。これが私のコードです:

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ファイルがダウンロードされた後、次のエラーでクラッシュします。

4

1 に答える 1

2

スクリーンショットから、発生していることがわかりますmutateError。これは、列挙しているものを変更した場合、高速列挙中に発生する可能性があります。[self children]高速列挙の実行と同時にコレクションを変更するようなことが起こっていますか?たとえば、何かをしている複数のスレッドがありますか?

デバッガーを続行し、例外が完全にスローされるようにすると、コンソールに何が表示されますか?

ところで、あなたの.phpスクリプトは無効なXMLドキュメントを返しているようです-私のブラウザに関する限り、いくつかの文字は有効なUTF8ではありません。問題ではないかもしれませんが、修正して除外する価値があります。

于 2011-03-13T21:47:21.330 に答える