テーブルビューのリロード後にPFQueryTableViewControllerアプリがクラッシュする

ディエゴ

私のアプリには、会議のリストを表示するPFQueryTableViewControllerがあります。カスタムテーブルビューセルをタップすると、会議自体の詳細ビューがプッシュされ、このビューでユーザーはボタンを使用して会議をキャンセルできます。テーブルビューに2つのセクションを実装することができました。1つは現在のユーザーが作成した会議用で、もう1つは他のユーザー用です。テーブルビューは正常に機能し、解析データを正しくフェッチしますが、詳細ビューに入り、会議をキャンセルしてからテーブルビューに戻ると、アプリはエラーで終了します。解析コアで会議の1つを削除してから、プルしてテーブルビューを更新した場合も、同じことが言えます。エラーはこれです:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -      [__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** First throw call stack:
(
0   CoreFoundation                      0x000000010c4703f5 __exceptionPreprocess + 165
1   libobjc.A.dylib                     0x000000010c109bb7 objc_exception_throw + 45
2   CoreFoundation                      0x000000010c35b4d3 -[__NSArrayM objectAtIndex:] + 227
3   SpeedMeet_1.0                       0x0000000107d28fbc -[PFQueryTableViewController tableView:cellForRowAtIndexPath:] + 167
4   UIKit                               0x000000010aabdcd3 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 508
5   UIKit                               0x000000010aa9d7f1 -[UITableView _updateVisibleCellsNow:isRecursive:] + 2846
6   UIKit                               0x000000010aab365c -[UITableView layoutSubviews] + 213
7   UIKit                               0x000000010aa40199 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521
8   QuartzCore                          0x0000000109b60f98 -[CALayer layoutSublayers] + 150
9   QuartzCore                          0x0000000109b55bbe _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
10  QuartzCore                          0x0000000109b55a2e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
11  QuartzCore                          0x0000000109ac3ade _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242
12  QuartzCore                          0x0000000109ac4bea _ZN2CA11Transaction6commitEv + 390
13  QuartzCore                          0x0000000109ac5255 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89
14  CoreFoundation                      0x000000010c3a5347 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
15  CoreFoundation                      0x000000010c3a52a0 __CFRunLoopDoObservers + 368
16  CoreFoundation                      0x000000010c39b0d3 __CFRunLoopRun + 1123
17  CoreFoundation                      0x000000010c39aa06 CFRunLoopRunSpecific + 470
18  GraphicsServices                    0x000000010c9859f0 GSEventRunModal + 161
19  UIKit                               0x000000010a9c7550 UIApplicationMain + 1282
20  SpeedMeet_1.0                       0x0000000107cec163 main + 115
21  libdyld.dylib                       0x000000010ccdc145 start + 1
22  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

viewWillAppearで呼び出しているloadobjectメソッドは、テーブルビューをクリアしてからデータを再読み込みすることになっているため、これが発生する理由がわかりません。これは私の実装ファイルです:

@interface SMConfirmedMeetingsTableViewController ()

@property (strong,nonatomic) NSMutableArray *dataArray;
@property (strong,nonatomic) NSMutableArray *firstSectionArray;
@property (strong,nonatomic) NSMutableArray *secondSectionArray;

@end

@implementation SMConfirmedMeetingsTableViewController

- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:UITableViewStyleGrouped];
if (self) {
    // Custom the table

    // The className to query on
    self.parseClassName = @"MeetingObject";

    // The title for this table in the Navigation Controller.
    self.title = @"Confirmed meetings";

    // Whether the built-in pull-to-refresh is enabled
    self.pullToRefreshEnabled = YES;

    // Whether the built-in pagination is enabled
    self.paginationEnabled = YES;

    // The number of objects to show per page
    self.objectsPerPage = 20;
}
return self;
}


#pragma mark - View lifecycle

- (void)viewDidLoad
{
[super viewDidLoad];

UIBarButtonItem *menuIcon = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"menu_icon.png"] style:UIBarButtonItemStylePlain target:self action:@selector(showMenu:)];
self.navigationItem.leftBarButtonItem = menuIcon;

UINib *nib = [UINib nibWithNibName:@"SMShowMeetingTableViewCell" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"SMShowMeetingTableViewCell"];
}

-(void)viewWillAppear:(BOOL)animated
{
[self loadObjects];
}


#pragma mark - Parse

- (void)objectsDidLoad:(NSError *)error {
[super objectsDidLoad:error];
if (error) {
    // something
}
// This method is called every time objects are loaded from Parse via the PFQuery

PFUser *currentUser = [PFUser currentUser];

self.dataArray = [[NSMutableArray alloc] init];
self.firstSectionArray = [[NSMutableArray alloc] init];
self.secondSectionArray = [[NSMutableArray alloc] init];

for (PFObject *object in self.objects) {
    NSString *author = [object objectForKey:@"author"];
    if ([author isEqualToString: currentUser.username]) {
        //first section
        [self.firstSectionArray addObject:object];
    }else{
        //second section
        [self.secondSectionArray addObject:object];
    }
}

//add firstsection to the data array
NSDictionary *firstItemsArrayDict = [NSDictionary dictionaryWithObject:self.firstSectionArray forKey:@"data"];
[self.dataArray addObject:firstItemsArrayDict];

//add Secondsection to the data array
NSDictionary *secondItemsArrayDict = [NSDictionary dictionaryWithObject:self.secondSectionArray forKey:@"data"];
[self.dataArray addObject:secondItemsArrayDict];
}

- (PFQuery *)queryForTable {

PFUser *currentUser = [PFUser currentUser];

PFQuery *queryAsAuthor = [PFQuery queryWithClassName:self.parseClassName];
[queryAsAuthor whereKey:@"user" equalTo: currentUser];

PFQuery *queryAsParticipant = [PFQuery queryWithClassName:self.parseClassName];
[queryAsParticipant whereKey:@"participants" equalTo:currentUser.username];

PFQuery *query = [PFQuery orQueryWithSubqueries:@[queryAsAuthor, queryAsParticipant]];
[query whereKey:@"isAvailable" equalTo:[NSNumber numberWithBool:NO]];
[query orderByAscending:@"meetingDateAndTime"];

return query;
}


# pragma mark - Table view

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return self.dataArray.count;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (section == 0) {
    return self.firstSectionArray.count;
}else
    return self.secondSectionArray.count;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
// sections title text
if (section==0) {
    return @"Created by me";
}else return @"Created by others";
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 50;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object {
static NSString *CellIdentifier = @"SMShowMeetingTableViewCell";

SMShowMeetingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[SMShowMeetingTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

NSDictionary *dictionary = [self.dataArray objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"data"];
PFObject *obj = [array objectAtIndex:indexPath.row];

cell.categoryLabel.text = [obj objectForKey:@"meetingCategoryString"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateStyle = NSDateFormatterLongStyle;
dateFormatter.timeStyle = NSDateFormatterNoStyle;
cell.dateLabel.text = [dateFormatter stringFromDate:[obj objectForKey:@"meetingDateAndTime"]];
cell.locationLabel.text = [obj objectForKey:@"meetingLocationString"];

return cell;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForNextPageAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"NextPage";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.text = NSLocalizedString(@"Loading more meetings...",@"loading");
cell.userInteractionEnabled = NO;

return cell;
}


#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[super tableView:tableView didSelectRowAtIndexPath:indexPath];

NSDictionary *dictionary = [self.dataArray objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"data"];
PFObject *obj = [array objectAtIndex:indexPath.row];
SMShowMeetingDetailViewController *meetingDetail = [[SMShowMeetingDetailViewController alloc]init];
meetingDetail.isMyMeetings = YES;
meetingDetail.meeting = obj;
[self.navigationController pushViewController:meetingDetail animated:YES];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView.contentSize.height - scrollView.contentOffset.y < (self.view.bounds.size.height)) {
    if (![self isLoading]) {
        [self loadNextPage];
    }
}
}

@end
デリー

あなたがする必要があるのは[self.tableView reloadData];、の終わりに追加することですobjectsDidLoad:これにより、更新されたデータでUIが自動的に更新されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

NSPredicateの後にテーブルビューデータをリロードするとアプリがクラッシュする

分類Dev

テーブルビューにアニメーションを追加した後、アプリケーションがクラッシュする(Swift)

分類Dev

ネイティブiOSアプリのUnityがビルド後にクラッシュする

分類Dev

マテリアライズドビューのあるテーブルに列をドロップします

分類Dev

テーブルビューObjectiveCの検索バーにテキストを入力しているときにアプリがクラッシュする

分類Dev

テーマの更新後にアプリがクラッシュする

分類Dev

アプリがクラッシュし、テーブルビューデータを再読み込みする

分類Dev

リストビューの最後に到達するとアプリがクラッシュする

分類Dev

デプロイ後の起動時にSwiftコードがクラッシュするアプリ

分類Dev

テーブルビューを一方向にリロードおよびスクロールしているときにアプリがクラッシュする

分類Dev

スクロール可能なビューアプリのクラッシュに関するTitaniumAndroidの問題

分類Dev

Firebase Recyclerビューがリリースビルドアプリでクラッシュする

分類Dev

ビューの変更時にアプリがクラッシュする

分類Dev

Webビューの読み込み後にアプリがクラッシュする

分類Dev

高速リフレッシュを実行するために、一部のテーブルのビューログをマテリアライズドビューにスキップする方法

分類Dev

QuickBloxのリリースビルドの原因でアプリがクラッシュする

分類Dev

アプリケーションがバックグラウンドプロセスからiOSのアクティブプロセスに移行するときに、編集可能なアラートビューを表示します

分類Dev

あるリサイクラービュー(リストビュー)から別のリサイクラービュー(リストビュー)にアイテムをドラッグアンドドロップします

分類Dev

サポートライブラリを「23.1.1」から「23.2.1」にアップグレードした後、リサイクラービューのアイテムがリサイクラービューの高さ全体を埋める

分類Dev

サポートライブラリを「23.1.1」から「23.2.1」にアップグレードした後、リサイクラービューのアイテムがリサイクラービューの高さ全体を埋める

分類Dev

サポートライブラリを「23.1.1」から「23.2.1」にアップグレードした後、リサイクラービューのアイテムがリサイクラービューの高さ全体を埋める

分類Dev

ビューコントローラの移行が速すぎるとアプリがクラッシュする

分類Dev

webview内でURLをリロードした後にアプリがクラッシュする

分類Dev

スパナブル文字列のテキストビューに1行しかない場合、アプリがクラッシュする

分類Dev

ファイル/画像のアップロード後にASP.NET3.0mvcアプリがクラッシュする

分類Dev

ReactNativeアプリがリリースビルドでのみクラッシュする

分類Dev

テーブル行の読み込み時にアプリがクラッシュする

分類Dev

マテリアルデザインを使用して、プログラムがランチャーアクティビティから別のアクティビティに移行するとアプリがクラッシュする

分類Dev

Firebaseのテキストと画像のアップロードでアプリがクラッシュする

Related 関連記事

  1. 1

    NSPredicateの後にテーブルビューデータをリロードするとアプリがクラッシュする

  2. 2

    テーブルビューにアニメーションを追加した後、アプリケーションがクラッシュする(Swift)

  3. 3

    ネイティブiOSアプリのUnityがビルド後にクラッシュする

  4. 4

    マテリアライズドビューのあるテーブルに列をドロップします

  5. 5

    テーブルビューObjectiveCの検索バーにテキストを入力しているときにアプリがクラッシュする

  6. 6

    テーマの更新後にアプリがクラッシュする

  7. 7

    アプリがクラッシュし、テーブルビューデータを再読み込みする

  8. 8

    リストビューの最後に到達するとアプリがクラッシュする

  9. 9

    デプロイ後の起動時にSwiftコードがクラッシュするアプリ

  10. 10

    テーブルビューを一方向にリロードおよびスクロールしているときにアプリがクラッシュする

  11. 11

    スクロール可能なビューアプリのクラッシュに関するTitaniumAndroidの問題

  12. 12

    Firebase Recyclerビューがリリースビルドアプリでクラッシュする

  13. 13

    ビューの変更時にアプリがクラッシュする

  14. 14

    Webビューの読み込み後にアプリがクラッシュする

  15. 15

    高速リフレッシュを実行するために、一部のテーブルのビューログをマテリアライズドビューにスキップする方法

  16. 16

    QuickBloxのリリースビルドの原因でアプリがクラッシュする

  17. 17

    アプリケーションがバックグラウンドプロセスからiOSのアクティブプロセスに移行するときに、編集可能なアラートビューを表示します

  18. 18

    あるリサイクラービュー(リストビュー)から別のリサイクラービュー(リストビュー)にアイテムをドラッグアンドドロップします

  19. 19

    サポートライブラリを「23.1.1」から「23.2.1」にアップグレードした後、リサイクラービューのアイテムがリサイクラービューの高さ全体を埋める

  20. 20

    サポートライブラリを「23.1.1」から「23.2.1」にアップグレードした後、リサイクラービューのアイテムがリサイクラービューの高さ全体を埋める

  21. 21

    サポートライブラリを「23.1.1」から「23.2.1」にアップグレードした後、リサイクラービューのアイテムがリサイクラービューの高さ全体を埋める

  22. 22

    ビューコントローラの移行が速すぎるとアプリがクラッシュする

  23. 23

    webview内でURLをリロードした後にアプリがクラッシュする

  24. 24

    スパナブル文字列のテキストビューに1行しかない場合、アプリがクラッシュする

  25. 25

    ファイル/画像のアップロード後にASP.NET3.0mvcアプリがクラッシュする

  26. 26

    ReactNativeアプリがリリースビルドでのみクラッシュする

  27. 27

    テーブル行の読み込み時にアプリがクラッシュする

  28. 28

    マテリアルデザインを使用して、プログラムがランチャーアクティビティから別のアクティビティに移行するとアプリがクラッシュする

  29. 29

    Firebaseのテキストと画像のアップロードでアプリがクラッシュする

ホットタグ

アーカイブ