2015-12-02 5 views
0

Я не знаю причину, но я не могу проверить, если UIImage является nil, что это кодТип() не соответствует протоколу

 var arrayBuildingImage: [UIImage] = [] 

     for(var i = 0; i <= 100; i++){ 

      var path:String = self.getDocumentsDirectory().stringByAppendingPathComponent("building/\(i).png") 

      if (arrayBuildingImage[i] = UIImage(contentsOfFile: path)?) {//ERROR HERE 

      } 
      else{ 
       break 
      } 

     } 

Ошибка:

Тип() не соответствует протоколу '' BooleanType

Я использую Swift 1.1

+0

Почему вы используете Swift 1.1 вместо Swift 2? – Arsen

+1

уверены, что вы не опечатываете свой массив 'arrayBuildingImage [i] = UIImage (contentOfFile: path)?'. Вы не имеете в виду 'arrayBuildingImage [i] == UIImage (contentsOfFile: path)?' Right? –

ответ

0

Попробуйте это:

 arrayBuildingImage[i] = UIImage(contentsOfFile: path)? 
     if (arrayBuildingImage[i] != nil) {//ERROR HERE 

     } 
     else{ 
      break 
     } 
0

Вы используете Swift.

В Swift операнд оператора "if" должен быть булевым выражением. Оператор присваивания не производит никакого значения (или значения типа Void, если вы предпочитаете).

Либо сравнить результат задания с нолем, либо гораздо лучше использовать «если пусть».

1

Вы должны проверить, если это ноль:

let img : UIImage? = UIImage(contentsOfFile: path) 
if img != nil {} 

или использовать "если позволить" заявление:

if let img = UIImage(contentsOfFile: path) {} 

и в более "Swifty" путь:

guard let img = UIImage(contentsOfFile: path) else { return } 
// Do you stuff here 
Смежные вопросы