Я пишу приложение для викторины и есть табличное представление, чтобы добавить тему (имя сохраняется в основных данных), и когда вы выбираете путь индекса, который он передает, при условии, что контроллер подробного представления (это работает просто отлично), но у меня возникают проблемы с проверкой того, существуют ли какие-либо карты (у субъекта есть NSOrderedSet из «Карт»). Я продолжаю сталкиваться с двумя моими попытками: я делал это быстро, с отношениями и таблицами, и это всегда было хорошо, поэтому я не уверен, в чем проблема. Спасибо за помощь, как всегда!Проблемы с проверкой, существует ли значение в Swift 2
Моя первая попытка, хотя он говорит, «поймать блок недоступен, поскольку никаких ошибок не выбрасывается в сделать блок», он выходит из строя с «Bad Инструкцией» на линии после того, как «сделать»
do {
if let firstCard = self.subject?.cards![0] as? Card {
self.currentCard = firstCard
}
} catch {
}
Моей второй попытку , он выходит из строя на первой линии
if let firstCard = self.subject?.cards![0] as? Card {
self.currentCard = firstCard
}
Моя третья попытка
if self.subject!.cards != nil {
self.currentCard = self.subject!.cards![0] as! Card
}
Моя четвёртая попытка, разворачивая как субъекта собственности и субъекта, он не звонит из self.subject.cards, но по-прежнему падает
if let firstCard = self.subject!.cards?[0] as? Card {
self.currentCard = firstCard
}
Где свойства объявляются
var draggableView = DraggableView!()
var subject : Subject?
var currentCard : Card?
var cardArray = [Card]()
Обновление с методом объекта (отлично работает, но поместил его здесь только для справки), предмет передается из другого класса, и этот метод, который вызывается в верхней части окна, загружал.
func updateWithSubject(subject: Subject) {
if let subject = self.subject {
self.subject = subject
}
}
Во всех четырех ваших попыток, вы «принудительные» ('!') в какой-то момент, чего обычно следует избегать. Кроме того, вместо того, чтобы явно пытаться получить доступ к индексу '0' в вашем массиве, вместо этого вы можете использовать свойство' .first' (необязательно). Если ваш массив пуст, доступ к '[0]' приведет к исключению во время выполнения. Вы можете попробовать 'if let firstCard = self.subject? .cards? .first ...'. (Кроме того, свойство '.cards' класса' Subject'/struct не является объектом 'Card'? Интересно о преобразовании типа в' Card'.) – dfri
В нем указано, что NSOrderedSet не имеет члена «первым», что бы лучший способ преобразования множества в массив? – Echizzle
Мой плохой, я думал, что свойство '.cards'' Subject' было массивом объектов 'Card' (вы не показали нам' Subject' class/struct ... Но теперь я вижу, что вы написали это в текст). В любом случае, 'NSOrderedSet' имеет свойство' .array', _ "Представление упорядоченного набора как массива. (Только для чтения)" _, поэтому, я думаю, вы могли бы использовать 'if let firstCard = self.subject? .cards ? .array.first ... '. – dfri