0

XML を解析し、XML の 1 つの要素からの URL を NSArray に格納しようとしています。これまでの私のコードは次のとおりです。

 NSURL *url = [NSURL URLWithString:@"http://www.316apps.com/LakesideDocs/podcasttrial.xml"];

   NSData *xmlData = [[NSMutableData alloc] initWithContentsOfURL:url];
   NSError *error;
   GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData 
                                                          options:0 error:&error];

   NSArray *channels = [doc.rootElement elementsForName:@"channel"];
   for (GDataXMLElement *channel in channels) {            


       NSArray *items = [channel elementsForName:@"item"];
       for (GDataXMLElement *item in items) {

           NSString *articlePoint = [item valueForChild:@"link"];
           NSArray *linkarray = [[NSArray alloc] initWithObjects:articlePoint, nil];

           NSLog(@"%@", linkarray);

       }

   }

NSLog については、次のことが期待されます。

TabBarSample[40191:fb03] (
    (
    "http://domain.com/image1.jpg"
 ),
(
"http://domain.com/image2.jpg"
)
)

しかし、私は得る:

TabBarSample[40191:fb03] (
"http://domain.com/image1.jpg"
)
TabBarSample[40191:fb03] (
"http://domain.com/image2.jpg"
)

私は何を間違っていますか?

4

1 に答える 1

2

ループごとに、新しい配列を作成します。

 NSArray *linkarray = [[NSArray alloc] initWithObjects:articlePoint, nil];

代わりに、llopの外側にNSMutableArrayが必要であり、すべてのループ中にオブジェクトを追加します

   NSMutableArray *linkarray = [NSMutableArray array];
   NSArray *items = [channel elementsForName:@"item"];
   for (GDataXMLElement *item in items) {

       NSString *articlePoint = [item valueForChild:@"link"];
       [linkarray addObject:articlePoint];

       NSLog(@"%@", linkarray);

   }

増加する配列がわかりにくい場合は、forループの後にNSLogを配置する必要があります。

   NSMutableArray *linkarray = [NSMutableArray array];
   NSArray *items = [channel elementsForName:@"item"];
   for (GDataXMLElement *item in items) {

       NSString *articlePoint = [item valueForChild:@"link"];
       [linkarray addObject:articlePoint];
   }

   NSLog(@"%@", linkarray);
   NSLog(@"count: %d", [linkarray count]);
于 2012-05-23T19:51:50.790 に答える