0

コア データ エンティティのアイテムを表示するビュー コントローラーがあります。同じエンティティからのレコードを一覧表示するテーブルビューもあります。テーブルは編集可能で、ユーザーはすべてのレコードを削除できます。これが発生すると、空の配列でレコードを探しているため、ピッカービューを保持しているビュー コントローラーが爆発します。これを防ぐ方法は?objectAtIndex:row で何か違うことをする必要があると思います...

# pragma mark PickerView Section

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;  // returns the number of columns to display.
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return [profiles count];  // returns the number of rows
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    // Display the profiles we've fetched on the picker
    Profiles *prof = [profiles objectAtIndex:row];
    return prof.profilename;

}

//If the user chooses from the pickerview

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    selectedProfile = [[profiles objectAtIndex:row]valueForKey:@"profilename"];
}

編集* *

OK、問題の原因を見つけました... PickerView でデフォルトを設定していました..

self.profiles = [[self.managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

selectedProfile = [[profiles objectAtIndex:0]valueForKey:@"profilename"];

[pickerView reloadAllComponents];

それを外すと、チャンピオンのように機能します。

4

0 に答える 0