0

ブログ アプリで記事を更新し、以前のリリース以降に作成された可能性のある新しい記事を追加しようとしています。

TableView は配列 _allEntries を使用します。ユーザーが更新ボタンをクリックすると、配列をクリアする必要があり、それをクリアした後、元の起動コードを実行して RSS を解析し、テーブル ビューを再作成する必要があると言われました。私はそれをやっています:

[_allEntries removeAllObjects];
[self refresh];

ただし、それを行うと、次のエラーでクラッシュします。

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 4 beyond bounds for empty array'

私が間違っていることについて何か考えはありますか?

編集:これが私のviewDidLoadと更新コードと更新コードです。

- (void)viewDidLoad { [super viewDidLoad]; 
self.allEntries = [NSMutableArray array]; 
self.queue = [[[NSOperationQueue alloc] init] autorelease]; 
self.feeds = [NSArray arrayWithObjects:@"feedurlhere", nil]; 
[self refresh]; 
} 
- (void)refresh {

for (NSString *feed in _feeds) {
    NSURL *url = [NSURL URLWithString:feed];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];
    [_queue addOperation:request];
}

}

-(void)updatearticle {
[_allEntries removeAllObjects];
[self refresh];
}
4

2 に答える 2

1

更新を呼び出す前に、フィードが viewDidLoad メソッドに入力されるため、最初の読み込み時に機能します。すべてのオブジェクトを削除してから更新を呼び出すと、配列に何もないため、境界外エラーが発生します。すべてのコード ([self refresh] を除く) を viewDidLoad から refresh メソッドに移動する必要があります。

于 2012-09-01T05:06:20.010 に答える
0

をテーブル ビューのデータ ソースとして使用する場合_allEntriesは、 の[self.tableView reloadData]後に呼び出す必要があります[_allEntries removeAllObjects]

于 2012-09-01T05:05:46.767 に答える