Я должен всегда называть [супер viewDidLoad] в методе-viewDidLoad?

Для этого вам нужно убедиться, что ваша переменная index содержит только целое число, а не какой-либо другой объект, который может содержать несколько значений (если «Bob» появляется более одного раза). В этом случае он будет содержать только одно значение, поскольку «Боб» появляется в вашей таблице только один раз, но вы получаете объект Int64Index, который может содержать несколько целых чисел. То, что вы хотите, это просто старое целое число.

Следующее должно работать для вашей таблицы и для таблицы, где Боб действительно появляется несколько раз (он выберет индекс для первой строки, в которой появляется «Боб»):

index = (df['Name'] == 'Bob').idxmax()

The Функция idxmax возвращает индекс элемента с самым высоким значением в серии (а значение True выше, чем False, поэтому возвращает индекс, имя которого равно «Боб»). В случае, когда есть два или более высоких значения, возвращается первый индекс.

52
задан Thanks 5 May 2009 в 01:43
поделиться

4 ответа

Если вы переопределяете метод, вы все равно должны вызывать метод в супер. Даже если суперкласс сегодня ничего не делает с этим, Apple может однажды изменить реализацию, и ваш код загадочным образом перестанет работать. Если вам действительно не нужно ничего делать с этим методом, полностью исключите его из своего кода, и метод супер будет работать как обычно, без какого-либо вмешательства с вашей стороны.

49
ответ дан 7 November 2019 в 09:09
поделиться

Как говорит Маркус, UIViewController ничего не делает в своем методе viewDidLoad, поэтому вам не нужно его вызывать. Тем не менее, это хорошая привычка, если вы изменяете структуру наследования и вдруг класс, который раньше наследовал от UIViewController, теперь наследует от того, что делает , что-то делает в методе viewDidLoad.

18
ответ дан 7 November 2019 в 09:09
поделиться

Вам не нужно вызывать [super viewDidLoad]

Насколько я знаю, viewDidLoad в суперклассе (UIViewController) - только пустая функция, которая вызывается, когда ViewController инициализируется с помощью nib-файла.

Поэтому, если вам нужно выполнить какую-либо инициализацию, вы должны переопределить эту функцию и поместить туда свой код.

9
ответ дан 7 November 2019 в 09:09
поделиться

Нет, вам не нужен для вызова [super viewDidLoad]. Изменить: но читайте ниже, потому что я думаю, что вам определенно следует .

Давайте будем реальными: Apple не собирается нарушать работу тысяч приложений, в том числе основанных на их опубликованном образце кода, путем при принятии решения о событии, которое они в настоящее время не обрабатывают, внезапно необходимо сделать что-то, что разработчики могут или не захотят останавливать, и очень важно, чтобы, если вам не нужно другое поведение, вы не останавливаете событие.

Изменить: Наличие Я смотрел, как Apple обеспечивает совместимость еще на один год, и теперь рекомендую изучить и использовать правильный шаблон. Хотя я сомневаюсь, что двоичный файл вашего приложения когда-либо внезапно перестанет работать, он Ясно, что iPhone определяет, для какого SDK был создан ваш двоичный файл, и на его основе изменяет некоторое поведение ОС.

Apple может однажды потребовать, чтобы в некоторых будущих SDK следовали определенной схеме. Это не повлияет на вас, пока вы не выполните повторную сборку с использованием последней версии Xcode + SDK, но тогда вы получите эти перерывы без каких-либо изменений исходного кода. Изучите этот образец и следуйте ему, чтобы быть в безопасности.

29
ответ дан 7 November 2019 в 09:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: