我遇到了一个问题,即使经过几个小时的测试后,我也无法弄清楚我需要的不同方法:以下是我遇到问题的代码:
AppDelegate.h
#import <Three20/Three20.h>
#import "NewsRssParser.h"
#import "NewsRss.h"
@class NewsRssParser;
@class NewsRss;
@interface AppDelegate : NSObject <UIApplicationDelegate,NewsRssParserDelegate> {
NewsRssParser * _rssParser;
NSMutableArray * _newsRssArray;
}
@property(readwrite, retain) NewsRssParser * rssParser;
@property(readwrite, retain) NSMutableArray * newsRssArray;
@end
AppDelegate.m
@implementation AppDelegate
@synthesize rssParser = _rssParser;
@synthesize newsRssArray = _newsRssArray;
[...]
- (void)myFunction{
NSMutableArray *dsItems = [[[NSMutableArray alloc] init] autorelease];
for(NSMutableArray *rssItem in self.rssParser.rssItems)
{
NSString * rssItemTitle = [(NewsRss *)rssItem title];
NSString * rssItemAuthor = [@"par " stringByAppendingString:[(NewsRss *)rssItem author]];
NSString * rssItemDescription = [(NewsRss *)rssItem description];
NSString * rssItemLinkUrl = [(NewsRss *)rssItem linkUrl];
NSString * rssItemImageUrl = [(NewsRss *)rssItem mediaUrl];
TTTableMessageItem *tMsgItem = [TTTableMessageItem itemWithTitle:rssItemTitle caption:rssItemAuthor text:rssItemDescription timestamp:nil imageURL:rssItemImageUrl URL:rssItemLinkUrl];
[self.newsRssArray addObject:tMsgItem];
[dsItems addObject:tMsgItem];
}
NSLog(@"AppDelegate/count/rssItems=%d", [self.rssParser.rssItems count]);
NSLog(@"AppDelegate/count/newsRssArray=%d", [self.newsRssArray count]);
NSLog(@"AppDelegate/count/dsItems=%d", [dsItems count]);
}
当我运行代码时,我的RSS解析器正常工作,我可以在 self.rssParser.rssItems 中循环10个项目。我需要在另一个视图中访问这些项目以在表格中显示它们,因此我在我在.h文件中声明的 NSMutableArray * newsRssArray 中准备数据
但是,如果我尝试在NSMutableArray * newsRssArray中添加这10个对象,我最终没有任何内容(请参阅调试器中的代码输出)。如果我在函数中使用 NSMutableArray * dsItems ,我会成功测试我的代码。
这是gdb输出:
Attaching to process 47209.
2011-01-29 14:55:24.813 TestApp[47209:207] AppDelegate/count/rssItems=10
2011-01-29 14:55:24.814 TestApp[47209:207] AppDelegate/count/newsRssArray=0
2011-01-29 14:55:24.815 TestApp[47209:207] AppDelegate/count/dsItems=10
(gdb)
我做错了什么?
感谢您的帮助!
答案 0 :(得分:2)
只是浏览一下你提供的代码,我看不到你在哪里初始化newsRssArray。这是在另一个地方还是你忘记了init?
答案 1 :(得分:0)
您可能正在将这些项目添加到_newsRssArray
而不是newsRssArray