2014-10-22 3 views
1

Я не могу преобразовать NSURL в NSData. NSURL появляется при распечатке, но затем, когда я пытаюсь преобразовать его в NSData, переменная audioData продолжает возвращать нуль.Преобразование NSURL в NSData из didPickMediaItems

func mediaPicker(mediaPicker: MPMediaPickerController!, didPickMediaItems mediaItemCollection: MPMediaItemCollection!) 
{ 
    selectedSong = mediaItemCollection.items[0] as MPMediaItem 

    songUrl = selectedSong.valueForProperty(MPMediaItemPropertyAssetURL) as? NSURL 
    println("\(songUrl)") 

    audioData = NSData(contentsOfURL: songUrl) as NSData 
    println("\(audioData)") 
} 

Edited Код Поймать Ошибка

songUrl является URL-адрес песни, расположенной на моей библиотеке IPOD

var errorPointer:NSErrorPointer! 
    audioData = NSData(contentsOfURL: songUrl, options: NSDataReadingOptions.DataReadingMappedAlways, error: errorPointer) 
    if audioData == nil 
    { 
     println("\(errorPointer)") 
    } 

Этот код выводит ошибку: «фатальную ошибка: неожиданно найдено нуль при развертывании необязательного значения « на моей консоли

Edit # 2

Использование формата в формат ошибки в ответ ниже, теперь я получаю ошибку:

Произошла ошибка: Ошибка домена = NSCocoaErrorDomain Code = 256 «Операция не мог» t будет завершено. (Cocoa ошибка 256.)»UserInfo = 0x146f4a90 {NSURL = ставка библиотека: //item/item.m4a ID =273692689505570}

+0

использование [ 'NSData (contentsOfURL: опции: ошибка:)'] (HTTPS: //developer.apple.com/library/ios/documentation/ Cocoa/Reference/Foundation/Classes/NSData_Class/# // apple_ref/occ/instm/NSData/initWithContentsOfURL: options: error :) и дайте нам знать, что такое ошибка. –

+0

Спасибо за ответ ... Я написал код так: аудиоданные = NSData (contentsOfURL: songUrl, опции: NSDataReadingOptions.DataReadingMappedAlways, ошибка: NSErrorPointer()) хотя я не уверен, что инициализируется errorpointer правильно , на моей консоли не было никакой распечатки ошибок. – user3353890

+0

На консоли не должно быть никакого выхода. Вам нужно зарегистрировать ошибку. – rdelmar

ответ

0

URL, подходит только с AVFoundation, NSData не будет в состоянии сделать вещь с NSURL
от компании Apple Документов.

"Usage of the URL outside of the AV Foundation framework is not supported."

Пример того, как код параметра ошибки:

var error: NSError? 
audioData = NSData(contentsOfURL: songUrl, options: .DataReadingUncached, error: &error) 

if audioData == nil { 
    if let unwrappedError = error { 
     println("An Error Occurred: \(unwrappedError)") 
    } 
} 
+0

ugh, извините, я попробую еще раз. Весь NSErrorPointer немного отбросил меня, я подумал, что он просит другого, а не обычного NSError. Спасибо, что работал со мной. – user3353890

+0

Хорошо, теперь я думаю, что у меня есть правильная ошибка ...Программа печатает unrappedError как «Произошла ошибка: Ошибка домена = NSCocoaErrorDomain Code = 256» Операция не может быть выполнена. (Ошибка какао 256.) «UserInfo = 0x146f4a90 {NSURL = ipod-library: //item/item.m4a? Id =273692689505570}" – user3353890