0

メソッドがあります

- (void)viewDidAppear:(BOOL)animated
{
    [self updateViews];
}

- (void) updateViews
{
    NSInteger itemIndex = [[DataController sharedInstance] indexFromObjectProperty:itemUUID];
    if (itemIndex == NSNotFound) {
    [self.navigationController popViewControllerAnimated:YES];
    }
    NSDictionary *item = [[[DataController sharedInstance] getItems] objectAtIndex:itemIndex];
}

itemIndex == NSNotFound の場合はビューをロードする必要はありませんが、デバッグ モードではこの文字列が呼び出され、次の文字列がアクセスされ、例外が発生します。ビューの更新を停止してルート ビュー コントローラを表示する方法は?

4

1 に答える 1

1

これを簡単に行うには、次の 2 つの方法があります。

返品を追加します。

- (void) updateViews
{
    NSInteger itemIndex = [[DataController sharedInstance] indexFromObjectProperty:itemUUID];
    if (itemIndex == NSNotFound) {
        [self.navigationController popViewControllerAnimated:YES];
        return; // exits the method
    }
    NSDictionary *item = [[[DataController sharedInstance] getItems] objectAtIndex:itemIndex];
}

または、このメソッドで達成したい他のことがあります (主に、これがポップされるビューではない場合):

- (void) updateViews
{
    NSInteger itemIndex = [[DataController sharedInstance] indexFromObjectProperty:itemUUID];
    // nil dictionary
    NSDictionary *item;
    if (itemIndex == NSNotFound) {
        [self.navigationController popViewControllerAnimated:YES];
    } else {
        // setup the dictionary
        item = [[[DataController sharedInstance] getItems] objectAtIndex:itemIndex];
    }
    // continue updating
}
于 2013-08-21T17:33:19.450 に答える