2016-02-26 2 views
0

У меня есть изображение, которое я загружаю из Parse и загружаю в изображение. Когда я это делаю, я получаю следующую ошибку (с включенной печатью изображения, чтобы показать существование):Изображение было найдено при распаковке

<UIImage: 0x13707c950>, {2045, 2588} 

fatal error: unexpectedly found nil while unwrapping an Optional value 

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

if let image = objectsKeyValues[indexNumber]["image"] { 

      print(image) 

      sALargeNoteImage.imageView.image = image as? UIImage 
      sALargeNoteImage.imageView.contentMode = UIViewContentMode.ScaleAspectFit 

} 

Я не могу на всю жизнь понять, что происходит. Я много переработал в раскадровке, даже в один момент рефакторинг. Это может означать, что это связано (как я прочитал на SO), чтобы Xcode «запутался». Не совсем уверен, что я должен попробовать дальше, а не переделать раскадровку (это будет много работы). Я предполагаю, что смогу переделать его и скопировать код.

У кого-нибудь есть идеи? Я не использую симулятор, вместо этого загружаю его на iPad. Я попытался удалить и переустановить приложение.

Та часть, которая подсвечивается от ошибки:

sALargeNoteImage.imageView.image = image as? UIImage 

обновление:

var sALargeNoteImage = SALargeNoteImage() 

class SALargeNoteImage: UIViewController { 


@IBOutlet weak var imageView: UIImageView! 


override func viewDidLoad() { 
    super.viewDidLoad() 
    sALargeNoteImage = self 

} 
+0

установить точку останова и проверить свою переменную, чтобы определить, какой из них равен нулю. – Paulw11

+0

Похоже, что 'sALargeNoteImage' - это nil - попробуйте распечатать его и его' imageView' и 'image'. – sschale

+0

напечатал те, и он сломался на sALargeNoteImage.imageView – Walter

ответ

0

В какой-то момент я тестируя, если бы очистить изображение, когда я установил:

lSLargeNoteImage.imageView = nil 

против

lSLargeNoteImage.imageView.image = nil 

Я оставил это так случайно, и функцию, которая делает который выполняется до этого.

0

Поскольку вы создаете sALargeNoteImage с помощью простого init, он не будет подключен к любому из выходов в раскадровке.

Вы должны использовать что-то вроде

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let sALargeNoteImage=storyboard.instantiateViewControllerWithIdentifier("largeNoteViewController") as! SALargeNoteImage 

для того, чтобы создать экземпляр контроллера вид и связать все IBOutlets

Я настоятельно рекомендую вам избегать использования var someVariable=SomeType(), если все, что вы пытаетесь сделать это - подавить ошибку компилятора, чтобы свойства были инициализированы, и вы намерены позже инициализировать свойство. Гораздо лучше использовать var someVariable:SomeType!, поскольку это вызовет исключение, если вы забудете присвоить значение свойству, а не привести к неясным ошибкам, где используется значение по умолчанию.

+0

Итак, имя для раскадровки довольно просто (в данном случае «StudentAssignments»). Для идентификатора - должен ли я помещать заголовок «largeNoteViewController» где-нибудь на раскадровке? – Walter

+0

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

+0

Да, выберите сцену в вашем раскадровке, а затем в инспекторе идентификации справа установите идентификатор раскадровки – Paulw11

Смежные вопросы

 Смежные вопросы