このチュートリアルを使用して RSS リーダーに取り組んでいます。すべてのテーブル セル データはNSMutableArray
インスタンス (_allEntries) から取得されます。次に、インポート
EGOTableViewPullRefresh
して追加[self refresh]
します-(void)reloadTableViewDataSource
(self.refresh
は allEntries のデータを入力するメソッドです)。次に、プルして更新しますが、更新するたびにセルが複製されます。私はそれを2つの方法で解決しようとしました。
インターネットからデータをダウンロードするとき、
if (![_allEntries containsObject:entry])
前に追加しましたが機能しませんでした。比較するためにオブジェクトにまたは他の属性を[_allEntries insertObject:entry atIndex:insertIdx]
使用する必要があるかもしれませんが、効果的ではありません。entry.title
で行ったように
-viewDidLoad
、 を追加self.allEntries = [NSMutableArray array]
しますが、この行をどこに置くべきかわかりません。
私に方向性を教えてくれる人はいますか?
[編集]
viewDidLoad にはあまり多くのロジックはありません。
self.allEntries = [NSMutableArray array];
self.queue = [[NSOperationQueue alloc] init]; //add download&parse operation to a queue
self.feeds = [self getFeeds]; //load feeds from local file
そして、[自己更新] を reloadTableViewDataSource に入れました。アプリを初めて開いたときに、テーブルビューに何も表示されません。次に、引っ張って更新します。動作します。次に、もう一度引っ張って更新すると、複製されました。
これが「リフレッシュ」方法です。
- (void)refresh {
for (NSString *feed in _feeds) {
NSURL *url = [NSURL URLWithString:feed];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[_queue addOperation:request];
}
}
配列を再構築したいので、もう一度 self.allEntries = [NSMutableArray array] と書きますが、
「無効な更新: セクション 0 の行数が無効です。更新後の既存のセクションに含まれる行数 (1) は、更新前にそのセクションに含まれていた行数 (140) と等しくなります。」
前述のように、この行をどこに置くべきかについて、私は本当に混乱します。
もぅ~~