0

XMLAppDelegate.m ファイルに次のコードがあります。

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    [self.window makeKeyAndVisible];

    self.products = [NSMutableArray array];
    XMLViewController *viewController = [[XMLViewController alloc] init];
    viewController.entries = self.products; // 2. Here my Array is EMPTY. Why?

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:productData]];
    self.XMLConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

    NSAssert(self.XMLConnection != nil, @"Failure to create URL connection.");

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}

- (void)handleLoadedXML:(NSArray *)loadedData {
    [self.products addObjectsFromArray:loadedData]; // 1. here I get my Data (works fine)

    XMLViewController *viewController = [[XMLViewController alloc] init];
    [viewController.tableView reloadData];
}

問題をマークしました。ロードされたデータ (loadedData) を applicationDidFinishLaunching: に渡す可能性はありますか?

前もって感謝します..

4

1 に答える 1

1

あなたはどこhandleLoadedXMLに呼ばれますか?に渡したい場合は、その配列を返すapplicationDidFinishLaunchingだけで、 でそのメソッドを呼び出すことができます。handleLoadedXMLapplicationDidFinishLaunching

編集:

次のように考えてください。

あなたは最初にこれを持っています:

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    [self.window makeKeyAndVisible];

    self.products = [NSMutableArray array];
    XMLViewController *viewController = [[XMLViewController alloc] init];
    viewController.entries = self.products; // 2. Here my Array is EMPTY. Why?

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:productData]];
    self.XMLConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

    NSAssert(self.XMLConnection != nil, @"Failure to create URL connection.");

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}

ここではself.productsまだ設定していないことに注意してください。割り当てられているだけです。

アプリケーションの起動が完了すると、次のようになります。

// say you have something like this
- (NSArray *)didFinishParsing {
    return someArray;
}

このメソッドはどこかで呼び出され、次に以下のメソッドを呼び出して を設定しますself.products。今まであなたのself.products人口はありません。

- (void)handleLoadedXML:(NSArray *)loadedData {
    [self.products addObjectsFromArray:loadedData]; // 1. here I get my Data (works fine)

    XMLViewController *viewController = [[XMLViewController alloc] init];
    [viewController.tableView reloadData];
}

self.productsしたがって、に入力したい場合はapplicationDidFinishLaunching、 で配列を生成するメソッドを呼び出す必要がありますapplicationDidFinishLaunching。たとえばdidFinishParsing、 を実行するとself.products = [self didFinishParsing];、設定されます。

于 2012-08-09T22:51:12.870 に答える