2015-08-03 5 views
0

У меня есть приложение OS X, написанное в Swift, и я пытаюсь выполнить итерацию по каталогу и сохранить каждое изображение в массиве NSImages, чтобы я мог отображать их в NSImageView один за раз.Swift OS X - Сохранить .jpeg в массив NSImage

Мой код в настоящее время находится ниже:

func LoadImages() { 
    let fileManager = NSFileManager.defaultManager() 
    let enumerator:NSDirectoryEnumerator = fileManager.enumeratorAtPath(strPhotoDirectory)! 
    while let element = enumerator.nextObject() as? String { 
     if element.hasSuffix("jpg") || element.hasSuffix("jpeg") { 
      self.images.append(NSImage(contentsOfFile: element)!) 
     } 
    } 

    self.imageCurrent.image = self.images[0] // Sets my imageView to the first image 
} 

где strPhotoDirectory равно путь к файлу.

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

Я попытался po ИНГ консоль отладчика, чтобы найти некоторые из значений моих переменных, как это работает, и обнаружили, что element.hasSuffix("XXX") возвращает ложные для jpg, jpeg, JPG, JPEG. Изображение, которое я пытаюсь сохранить, имеет имя файла VH-YIZ VOZ B738 - YSSY - 26-07-2015 - 1 - Rotating on 34R и расширение .JPEG.

Что я делаю неправильно?

Заранее спасибо.

Редактировать Когда я запускаю код, он достигнет линии, указанной выше, и выводит:

strPhotoDirectory = /Users/Matt/Downloads/Test/ 
Total Path = /Users/Matt/Downloads/Test/VH-YIZ VOZ B738 - YSSY - 10-04-2015 - 1 - On short final for 25.JPG 

затем:

fatal error: unexpectedly found nil while unwrapping an Optional value

+0

enumerator.nextObj ect() фактически вернет имя файла, а не полный путь. вам нужно добавить его в путь к каталогу, в этом случае strPhotoDirectory и получить полный путь к файлу, прежде чем вы сможете создать NSImage. HTH – Shripada

+0

Я изменил свой код на 'self.images.append (NSImage (contentsOfFile:" \ (strPhotoDirectory) \ (element) ")!)', Но я все равно получаю ту же ошибку. –

+0

Каково значение strPhotoDirectory ?, также вы также можете вставить один из образованных путей изображения? – Shripada

ответ

0

Я получил свой код, чтобы работать, убедившись, что NSImage загруженный с полного пути

func LoadImages() { 
     // 
     // make certain to append a slash (/) at the end! 
     let strPhotoDirectory = "/Users/me/Pictures/" 

     // 
     let fileManager = NSFileManager.defaultManager() 
     let enumerator:NSDirectoryEnumerator = fileManager.enumeratorAtPath(strPhotoDirectory)! 
     while let element = enumerator.nextObject() as? String { 
      if element.hasSuffix("jpg") || element.hasSuffix("jpeg") { 
       if let image = NSImage(contentsOfFile: strPhotoDirectory + element) 
       { 
        self.images.append(image) 
       } 
      } 
     } 

     self.imageCurrent.image = self.images[0] // Sets my imageView to the first image 
    }