1

iOS アプリで EGOTableViewPullRefresh ライブラリを使用しています。これを実装するには、元のクラスを UIViewController のサブクラスから UITableViewController に変更する必要がありました。これにより、NSMutableArray などにデータを保存する方法が明らかに壊れました。

ヘッダ:

#import <UIKit/UIKit.h>
#import "EGORefreshTableHeaderView.h"

@interface PullViewController : UITableViewController  <EGORefreshTableHeaderDelegate, UITableViewDelegate, UITableViewDataSource>{

    NSArray *news;
    NSMutableArray *data;

    EGORefreshTableHeaderView *_refreshHeaderView;

    //  Reloading var should really be your tableviews datasource
    //  Putting it here for demo purposes
    BOOL _reloading;
}

- (void)reloadTableViewDataSource;
- (void)doneLoadingTableViewData;

@end

実装:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    data = [[NSMutableData alloc] init];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData{
    [data appendData:theData];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    news = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    [self.tableView reloadData];
    [DejalBezelActivityView removeViewAnimated:YES];
}
4

3 に答える 3

2

dataとして宣言しましたが、そのクラスにはセレクターNSMutableArrayがありません。appendData:

于 2012-12-09T05:46:27.153 に答える
2

NSMutableArrayの代わりにa をどのように使用できたのかわかりませんNSMutableData。実際、インスタンスを作成しているだけですNSMutableData。そのため、データの宣言をNSMutableDataクラス ivar の型に変更してください。

于 2012-12-09T05:33:41.663 に答える
1

これを試してみてください

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSMutableData *)theData{
    [data appendData:theData];
}

から

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData{
    [data appendData:theData];
}

また、

NSArray *news;
NSMutableArray *data; 

データの種類が配列であると確信していますか? またはそれはNSMutableDataでなければなりません..一度チェックしてください:)

于 2012-12-09T05:34:05.157 に答える