我正在尝试创建一个从服务器显示事件信息的基本应用程序
到目前为止,我下载了xml文件中的所有信息,并使用NSXMLParser解析它
我有一个我创建的事件对象,它存储了每个事件的所有信息,然后我用这些事件填充NSMutableArray。
然后我想在每个UITableView Cell显示时异步加载与每个事件相关的图像,并将它们存储在NSMutableArray中的事件对象的NSData中。这样我只会加载我需要的图像
我的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
我的问题是,我是否正确地选择了这些思路?我可以在NSMutableArray中的对象内部分配新的NSData吗?还是我在正确的轨道上要求事件对象下载它自己的图像?
感谢您花时间阅读这个过于冗长的问题。
答案 0 :(得分:3)
您不能使用getter方法设置属性,必须使用setter方法:
[[events objectAtIndex:cellIndexPath.row] setEventImageData:[[NSData alloc] initWithContentsOfURL:[[events objectAtIndex:cellIndexPath.row] eventImgURL]]];
答案 1 :(得分:1)
修改NSMutableArray中对象的另一种方法是:
if([[events objectAtIndex:cellIndexPath.row] count] >=2)
{
[[events objectAtIndex:cellIndexPath.row] replaceObjectAtIndex:2 withObject:[[NSData alloc] initWithContentsOfURL:[[events objectAtIndex:cellIndexPath.row] eventImgURL]];
}