2012-09-01 54 views
0


我试图创建一个基本应用程序来显示来自服务器的事件信息。
到目前为止,我将所有信息下载到xml文件中,并使用NSXMLParser对其进行解析。
我有一个事件对象,我创建了存储每个事件的所有信息,然后用这些事件填充一个NSMutableArray。
然后,我想异步加载与每个UITableView Cell显示的每个事件相关的图像,并将它们存储在位于NSMutableArray内的事件对象中的NSData中。这样我只会加载我需要的图像。
我的NSMutableArray的布局看起来像这样(简化):如何修改NSMutableArray中的对象

events 
     -event1 
      -(NSString *)title 
      -(NSURL *)imageURL 
      -(NSData *)eventData 
     -event2 
      -(NSString *)title 
      -(NSURL *)imageURL 
      -(NSData *)eventData 
etc.. 

我不知道什么是最好的做法在这里和我在努力使其发挥作用。

  • 选项1
    我可以尝试从MasterViewController直设置,这似乎不是我的权利,我也得到一个错误。 如果我使用的代码

    [[events objectAtIndex:cellIndexPath.row] eventImageData] = [[NSData alloc] initWithContentsOfURL:[[events objectAtIndex:cellIndexPath.row] eventImgURL]]; 
    

我得到的错误:expression not assignable

  • 选项2
    我可以写事件对象本身的方法来下载图像。我这样做了,并且对于我来说,无法让事件对象在完成获取图像后请求MasterViewController刷新相应的NSTableViewCell。

我的问题是,我是否正处于正确的轨道上?我可以在NSMutableArray中的对象内分配一个新的NSData吗?还是我在正确的轨道上要求事件对象下载它自己的图像?
感谢您花时间阅读这个冗长冗长的问题。

回答

3

不能使用getter方法来设置属性,你必须使用一个setter方法:

[[events objectAtIndex:cellIndexPath.row] setEventImageData:[[NSData alloc] initWithContentsOfURL:[[events objectAtIndex:cellIndexPath.row] eventImgURL]]]; 
+0

谢谢你真是太棒了!我现在踢自己,总是有点简单,不是!欢呼花时间帮助新手出去。 – Hockey

+0

+1完美答案 –

+0

@王子感谢:) – 2012-09-01 10:40:00

1

另一种选择到的NSMutableArray中修改一个对象是:

if([[events objectAtIndex:cellIndexPath.row] count] >=2) 
{ 
    [[events objectAtIndex:cellIndexPath.row] replaceObjectAtIndex:2 withObject:[[NSData alloc] initWithContentsOfURL:[[events objectAtIndex:cellIndexPath.row] eventImgURL]]; 
}