解析URL的NSMutableArray

时间:2015-07-17 15:46:41

标签: ios objective-c cocoa-touch rss nsmutablearray

我正在尝试为iPhone的RSS阅读器解析多个网址。我已经设法创建了一个从单个URL中提取单元格的RSS源,但我希望我的表能够同时从多个URL中获取单元格。以下是我现在所做的不起作用......有人看到任何可能的解决方案/问题吗?

feeds = [[NSMutableArray alloc] initWithCapacity:1];

 NSURL *url = [NSURL URLWithString:@"http://feed1"];
 NSURL *url2 = [NSURL URLWithString:@"http://feed2"];

 for(int i=0;i<5;i++)
     [feeds addObject:[url absoluteString]]; // Convert NSURL to NSString
     [feeds addObject:[url2 absoluteString]];

 [[NSUserDefaults standardUserDefaults] setObject:url forKey:@"feeds"];
 [[NSUserDefaults standardUserDefaults] setObject:url2 forKey:@"feeds"];
 [[NSUserDefaults standardUserDefaults] synchronize];

 NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"feeds"]];

 for(NSString *urlString in array)
    NSLog(@"%@",[NSURL URLWithString:urlString]); // Crete NSURL from NSString

 parser = [[NSXMLParser alloc] initWithContentsOfURL:feeds];

2 个答案:

答案 0 :(得分:1)

您只能在NSUserDefaults中为每个键设置一个值。 所以第二个调用会覆盖第一个调用 你可以尝试: [[NSUserDefaults standardUserDefaults] setObject:feeds forKey:@&#34; feeds&#34;];

代替:  [[NSUserDefaults standardUserDefaults] setObject:url forKey:@&#34; feeds&#34;];  [[NSUserDefaults standardUserDefaults] setObject:url2 forKey:@&#34; feeds&#34;];

但无论如何使用NSUserDefaults传递数据并不是最好的策略

答案 1 :(得分:0)

for(int i=0;i<5;i++){
    [feeds addObject:[url absoluteString]]; // Convert NSURL to NSString
}
[feeds addObject:[url2 absoluteString]];

相当于

for(int i=0;i<5;i++){
    [feeds addObject:[url absoluteString]]; // Convert NSURL to NSString
    [feeds addObject:[url2 absoluteString]];
}

你想要

parser = [[NSXMLParser alloc] initWithContentsOfURL:feeds];
Router.route('/profiles/:owner/pictures/:_id', function() {
  var file = Files.findOne(this.params._id);
  this.response.end(file.data);
}, {
  name: 'profile.image',
  where: 'server'
});

您不能简单地用NSURL对象数组替换NSURL对象。

为每个网址创建一个解析器。

正如Leonard所说:不要使用NSUserDefaults来传递数据。使用属性。