同じコードに関して別の問題を解決しましたが、私は2つの問題を分けたいと思います。別のViewController.mからAppDelegate.mの配列変数にアクセスする
リストを表示するviewcontrollerがロードされるたびに再度実行する必要がないように、私のAppDelegateにRssパーサによって生成されたテーブルを格納したいと思っています。
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
ApDelegate.m
[...]
@implementation AppDelegate
@synthesize rssParser = _rssParser;@synthesize newsRssArray = _newsRssArray;アプリケーションの実行の特定の段階で
[...]
、テーブルが適切にRSSリーダーに登録パーサーによって取り込まれます。
(ボイド)MyFunctionを{
NSMutableArrayの* dsItems = [[NSMutableArrayのALLOC] INIT]自動解放を:これが起こるとき、私は別のビューコントローラに表示可能な形式に変換したいです]; (self.rssParser.rssItemsでNewsRss * rssItem) {NSStringの* rssItemTitle = [rssItemタイトル]を
。 NSString * rssItemAuthor = [@ "par" stringByAppendingString:[rssItem author]]; NSString * rssItemDescription = [rssItemの説明]; NSString * rssItemLinkUrl = [rssItem linkUrl]; NSString * rssItemImageUrl = [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とGDBで[_newsRssArray count]
を示すことによって動作することを制御します。それは私がRSSフィードに持っている記事の数である10を返します。
これは、記事のリストを表示するためにViewControllerをロードしたいときです。私はそれをこのように実行します。
NewsVc.hを
#import <Three20/Three20.h>
@protocol NewsVcDelegate;
@class AppDelegate;
@interface NewsVc : TTTableViewController {
id<NewsVcDelegate> _delegate;
AppDelegate * _appDelegate;
}
@property(nonatomic,assign) id<NewsVcDelegate> delegate;
@property(nonatomic, retain) AppDelegate * appDelegate;
@end
@protocol NewsVcDelegate <NSObject>
- (void)NewsVc:(NewsVc*)controller didSelectObject:(id)object;
@end
[...]
- (void)loadNewsFromParser {
self.tableView.allowsSelection = NO;
//reload the table view
TTListDataSource *ds = [[TTListDataSource alloc] autorelease];
//NSMutableArray *dsItems = [[[NSMutableArray alloc] init] autorelease];
NSLog(@"NewsVC(loadNewsFromParser):count/newsRssArray=%d", [self.appDelegate.newsRssArray count]);
NSLog(@"NewsVC(loadNewsFromParser):count/rssItems=%d", [self.appDelegate.rssParser.rssItems count]);
[ds initWithItems:self.appDelegate.newsRssArray];
self.dataSource = ds;
self.tableView.allowsSelection = YES;
}
[...]
しかしのViewControllerのこの機能では、私は空の配列を参照し、同様NewsVc.m私がNewsRssの解析されたデータに直接アクセスしようとするときのように。 NewsVcからこの配列にアクセスするにはAppDelegate/NewsVcのコードで何が間違っていますか?
ありがとうございました!私は今日非常に遅く感じるこの...続きを読む
本当にありがとうございました。 – ceyquem