Что является причиной ошибки нераспознанного селектора keyNommand длины NSNull

У меня есть сцена класс / раскадровка в проекте, который до прошлой ночи работал хорошо в течение прошлых 4 недель, я работал над этим.

Мне удалось закомментировать практически все, и я по-прежнему получаю сбой при нажатии на UITextField и ввод числа. Он падает только при вводе значения, иначе он не падает.

Вот класс, которым я сейчас занимаюсь:

import Foundation
import UIKit
import HealthKit
import CoreData

class WorkoutViewController: UITableViewController {

//Properties
    @IBOutlet var numberOfLapsTextField: UITextField?
    @IBOutlet var metersPerLapTextField: UITextField?
    @IBOutlet var workoutDurationTextField: UITextField?
    @IBOutlet var paceTextField: UITextField?

    var  healthStore:HKHealthStore?

override func viewDidLoad() {
        super.viewDidLoad()
}

Первоначально он имел IBOutlets как! вместо? И у него есть свойство стека CoreData, некоторые размытые фоновые эффекты для фона табличного представления, извлекает вес пользователя из хранилища здоровья при помощи viewDidLoad, вспомогательный метод предиката для выборок из хранилища здоровья и кнопка отмены и завершения. Кнопка "Готово" собирала данные из текстовых полей, производила некоторые вычисления и сохраняла данные в хранилище медицинских данных и в coredata. Но ВСЕ это закомментировано, оставляя только то, что видно выше.

Мне удалось однажды получить странную трассировку стека в консоли (кажется, больше не могу ее получить), которая гласила:

[UIPhysicalKeyboardEvent _matchesKeyCommand:]

и некоторым другим нравится это как раз перед этим.

Я в тупике, есть идеи? Точки прерывания исключения - это одно, но оно просто приводит меня к строке объявления класса AppDelegate, где принимается UIResponder. Я выучил и перестроил. Я не знаю, что еще искать.Скриншот

Я думаю, это испорченный файл раскадровки, потому что я добавил и удалил сцены с текстовыми полями, и все они ведут себя одинаково. Вот мой файл storyboard.xml:

http://www.santiapps.com/iOS/Main.storyboard.xml

3 ответа

Решение

Хорошо, я удалил контроллеры навигации и контроллер панели вкладок и снова добавил их, и проблема исчезла! Больше нет сбоев при вводе данных. Это была явно испорченная сцена, но странно то, что внезапно все сцены с полями uitext повредились одинаково.

Я хотел бы добавить, что опытные пользователи SO должны действительно потратить время, чтобы поговорить с пользователями, публикующими сообщения, прежде чем они проголосуют против. В противном случае пользователям следует разрешить переформулировать вопрос обратно, потому что действительно несправедливо, что некоторые люди спешат с выводами и начинают голосовать за вопрос, который на самом деле является действительной проблемой.

У меня был сбой с той же загадкой NSNull length сообщение. При тестировании в симуляторе он иногда появлялся только на одном экране, и методом проб и ошибок я обнаружил, что это происходит только при нажатии клавиши cmd.

Просматривая в своем источнике раскадровки, я нашел следующее:

                <keyCommands>
                    <keyCommand/>
                </keyCommands>

Что, я думаю, позволяет вам определять сочетания клавиш для всех, кто использует клавиатуру Bluetooth. Однако - это пустое определение, поэтому кажется, что нажатие cmd вызвало сбой всего, что выполняется, потому что у меня не определены допустимые ярлыки.

Я абсолютно не знаю, как это произошло, но если вы используете графический интерфейс Interface Builder, чтобы посмотреть на раскадровку, перейдите к контроллеру представления, который дает вам проблему, и нажмите на корневой контроллер представления. Под инспектором Атрибутов есть раздел Команды ключей. Я считаю, что я должен был случайно нажать кнопку + здесь в какой-то момент. Вы можете выбрать первый "пункт" и нажать - чтобы избавиться от него, и проблема должна исчезнуть.

Или удалите keyCommands раздел из источника раскадровки напрямую.

Я вижу, что этот вопрос уже помечен как ответный, но я включаю его в том случае, если дополнительная информация в верхней части исходного ответа (и комментарий) будет полезна для кого-то еще.

Нажмите на контроллере представления и в инспекторе атрибутов в разделе "Ключевые команды" удалите запись "Введите действие ниже"

Другие вопросы по тегам