我们可以在didFinishLaunchingWithOptions下添加两个不同的NSOperations

时间:2011-03-07 18:12:16

标签: iphone objective-c nsxmlparser nsoperation

过去两天我一直在尝试这些并且在同一点上陷入困​​境。 我真的很感激任何帮助。 在didFinishLaunchingWithOptions下加载应用程序时是否可以添加两个不同的NSOperations。 就像我有两个不同的XML URL,它解析数据并使用NSOperation在DB中添加数据。 目前,当我解析两个不同的URL并使用NSOperations时,第一个NSOperationQueue具有第一个URL中的元素,这意味着它在完成后不会释放。

任何人都能帮助我吗?

Sagos


static NSString *string1 = @"abc.com/abc1.xml";; 
NSURLRequest *URL1 =[NSURLRequest requestWithURL:[NSURL  URLWithString:string1]]; 
self.URL1Connection =[[[NSURLConnection alloc] initWithRequest:URL1 delegate:self] autorelease]; 
static NSString *string2 = @"abc.com/abc2.xml";; 
NSURLRequest *URL2 =[NSURLRequest requestWithURL:[NSURL URLWithString:string2]]; 
self.URL2Connection =[[[NSURLConnection alloc] initWithRequest:URL2 delegate:self] autorelease];

2 个答案:

答案 0 :(得分:0)

@fluchtpunkt:

我有两个不同的XML网址,每个网址都有一个数据,我分别填充这些数据。 XML文件结构都不同,因此我有两个不同的NSOperations来解析文件并将它们添加到它们的数据库中。 我不确定如何在我的viewcontroller中添加NSOperation,如果可能的话,这将有很大的帮助,因为我有两个不同的视图控制器用于这两个URL。

答案 1 :(得分:0)

好的,为了防止更多的不答案和红点,我会写一个通用的工作流程。

以下是我将如何解决这个问题。我会创建一个同时进行下载和解析的NSOperation。我会忽略“NSOperation + Networking =你做错了!” - Sayers现在。

使用url和委托创建一个NSOperation(这可能是将显示数据的viewcontroller),对数据进行同步提取(即NSData *data = [NSData dataWithContentsOfURL:url];)然后解析数据。完成后,告诉代表数据已准备就绪。

这将消除稍微复杂的任务,以区分任意数量的xml下载。因为(我认为)这是你的问题。当其中一个完成时,您已将两个NSOperations添加到队列中。所以另一个是运行不完整的数据。如果我不得不猜测,我会说你混合了两者的下载数据。

将NSOperationQueue添加到appDelegate并将NSOperations添加到此队列。


作为旁注,如果您对问题有意见或补充,则应将其置于问题中。答案仅用于回答问题。如果你想发布不止一次,并且喜欢与其他开发者的对话,你应该看看一个论坛。例如thisthis,但还有更多。但是他们通常很糟糕,没有人(夸张)在那里给出了很好的答案,因为没有人想要在3页上阅读50篇帖子来获得图片。这就是为什么我们试图将所有相关内容放入问题中。对于想要回答您问题的人来说,这要容易得多。

所以下次如果有人要求提供更多信息或代码,请编辑问题并在那里添加信息。如果你不回答问题,你不应该发表答案。