2016-05-16 18 views
1

我想上傳一個視頻解析解析視頻上傳 - 致命錯誤:意外發現零,同時展開一個可選值

如果我只是嘗試上傳的視頻,像這樣:

let videoData = NSData(contentsOfURL: url) 
let videoFile = PFFile(name: "video.mov", data: videoData) 
videoUploadObject["Video"] = videoFile 

我會收到錯誤。我試圖通過運行類似於以下內容的方法來刪除它。

Main.sharedMain.userVideoOutputURL 

回報:

file:///private/var/mobile/Containers/Data/Application/3B78A154-4340-432B-817A-2857EBA8064A/tmp/video.mov 

這裏是我的全碼:

let url = Main.sharedMain.userVideoOutputURL! 

    if let videoData = NSData(contentsOfURL: url) { 

     let videoFile = PFFile(name: "video.mov", data: videoData) 
     videoUploadObject["Video"] = videoFile 


     print("Video File \(videoFile)") 


    } else { 
     print("Else") 
    } 

否則總是打印?我能做些什麼來解決這個問題?謝謝!

+0

我不明白,你怎麼能拿'Else'印刷_and_錯誤'致命錯誤:意外發現零而展開的可選Value'拋出只用你的代碼發佈。 – paulvs

+0

@paulvs對不起!我更新了我的問題! – Nicholas

+1

路徑看起來不正確,它應該是一個絕對路徑,如'file:/// Users/paulvs/.....'。一切指向一個不好的路徑或文件名,'NSData(contentsOfURL:)'返回'nil'。 – paulvs

回答

1

URL看起來很好(iOS不會對應用程序存儲使用「/ User/blah/blah/blah」)。

我首先想到的是檢查數據是否正確寫入。 NSData有一個「writeToFile:options:」方法,它返回一個布爾值。如果寫入失敗,這將返回false,並且拋出一個錯誤,該錯誤應該給你一些額外的信息。

let url = <YOUR_URL> 
do { 
    // put your options in here 
    try data.writeToURL(url, options: NSDataWritingOptions.DataWritingAtomic) 
} catch _ { 
    print(error.localizedDescription) 
} 

如果寫入成功,那麼您將要嘗試使用「contentsWithUrl:options:」加載數據。如果失敗,這也會引發一個錯誤,所以使用拋出的錯誤對象的「localisedDescription」屬性,你應該能夠找到它未加載的原因。

let url = <YOUR_URL> 
var data: NSData? = nil 
do { 
    // put your options in here 
    try data = NSData(contentsOfURL: url, options: NSDataReadingOptions.DataReadingUncached) 
} catch _ { 
    print(error.localizedDescription) 
} 

希望幫助:)

相關問題