古いバージョンとか新しいバージョンのことは気にしない。
libxmlの前に NSURLConnection を使ってサーバにデータを取りにいく必要があるのでそっちから進める。
けど、説明は簡単に終わらせる。
NSURLConnection のメソッド initWithRequest:delegate: を呼び出すとサーバに接続して結果を返してくれる。
そんで、結果を返してくれる度にその結果に対応した NSURLConnection のデリゲートメソッドが実行されるようになってる。
- @implementation RSSImporter
- /**
- とりあえず init に NSURLConnection の処理を書いてみる。
- */
- - (id)init {
- self = [super init];
- if (self != nil) {
- NSString *feedURL = @"http://eyesrobe.blogspot.com/feeds/posts/default?alt=rss";
- NSURLRequest *requestURL = [NSURLRequest requestWithURL:[NSURL URLWithString:feedURL]];
- NSURLConnection *urlConnection = [[[NSURLConnection alloc] initWithRequest:requestURL delegate:self] autorelease];
- if (urlConnection == nil) {
- NSLog(@"error");
- }
- }
- return self;
- }
- - (void)dealloc {
- [super dealloc];
- }
- #pragma mark NSURLConnection Delegate methods
- //
- // ここから下のメソッドが、NSURLConnectionのデリゲートメソッド
- //
- - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
- // データ受信
- NSLog(@"受信中(データは分割されて受信される)");
- }
- - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
- // 受信完了
- NSLog(@"受信完了");
- }
- - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
- // 受信エラー
- NSLog(@"エラー");
- }
- @end
NSURLConnection の説明終わり。
ここまでで取り敢えず実行させてみたい。
実行させるにはどこかでRSSImporterのインスタンスを作らないとなので、作る。
{YourProject}AppDelegate.m/.h でやることにする。
- //
- // {YourProject}AppDelegate.m
- // コードの{YourProject}は自分のプロジェクト名に置き換えてね。
- //
- // ここでは、RSSImporterクラスの使い方の説明しようとしてるだけなの
- // で、「// これ追加」ってところを自分の環境にあわせて追加すること。
- //
- #import <UIKit/UIKit.h>
- @class {YourProject}ViewController;
- @class RSSImporter; // これ追加
- @interface {YourProject}AppDelegate : NSObject <UIApplicationDelegate> {
- UIWindow *window;
- {YourProject}ViewController *viewController;
- RSSImporter *importer; // これ追加
- }
- @property (nonatomic, retain) IBOutlet UIWindow *window;
- @property (nonatomic, retain) IBOutlet {YourProject}ViewController *viewController;
- @property (nonatomic, retain) RSSImporter *importer; // これ追加
- @end
- //
- // {YourProject}AppDelegate.h
- // コードの{YourProject}は自分のプロジェクト名に置き換えてね
- //
- // ここでは、RSSImporterクラスの使い方の説明しようとしてるだけなの
- // で、「// これ追加」ってところを自分の環境にあわせて追加すること。
- //
- #import "{YourProject}AppDelegate.h"
- #import "{YourProject}ViewController.h"
- #import "RSSImporter.h" // これ追加
- @implementation {YourProject}AppDelegate
- @synthesize window;
- @synthesize viewController;
- @synthesize importer; // これ追加
- #pragma mark -
- #pragma mark Application lifecycle
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- importer = [[RSSImporter alloc] init]; // これ追加
- [window addSubview:viewController.view];
- [window makeKeyAndVisible];
- return YES;
- }
- ~(略)~
- - (void)dealloc {
- [importer release]; // これ追加
- [viewController release];
- [window release];
- [super dealloc];
- }
- @end
編集終わったら、ビルドと実行を行う。
そうするとコンソールに、
[Session started at 2010-09-30 15:21:35 +0900.]
2010-09-30 15:21:39.928 Foo[1715:207] 受信中(データは分割されて受信される)
2010-09-30 15:21:39.931 Foo[1715:207] 受信中(データは分割されて受信される)
2010-09-30 15:21:39.962 Foo[1715:207] 受信中(データは分割されて受信される)
2010-09-30 15:21:39.964 Foo[1715:207] 受信中(データは分割されて受信される)
2010-09-30 15:21:39.966 Foo[1715:207] 受信中(データは分割されて受信される)
2010-09-30 15:21:39.967 Foo[1715:207] 受信完了
な感じで表示さるので、これで NSURLConnection については理解できたということにする。
0 件のコメント:
コメントを投稿