2017-05-05 39 views
0

這是我的情況:我在我的ios應用程序(在Swift中運行)本地調用文件。URL前綴的不同動作

如果文件是JPG格式,則會發生一個動作,如果該文件是mp4,則會發生另一個動作。

對於這個i'musing驗證碼:

let urlString = "\(posts[selectedIndexPath].link)" 

    let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] 

    let fileName = urlString as NSString; 
    let filePath="\(documentsPath)/\(fileName.lastPathComponent)"; 
    let fileURL = NSURL.init(fileURLWithPath: filePath) 
    let request = NSURLRequest.init(url: fileURL as URL) 


    /* END DOWNLOAD + READ LOCALY */ 

    if (fileURL.pathExtension?.hasPrefix("jpg"))! { 
     Swift.print("THIS IS A JPG") 


    } 
    else if (fileURL.pathExtension == "mp4") { 

     Swift.print("THIS IS A MP4") 

    } 

這完美的作品。

我現在需要做的是不要在本地調用eifle來調用它的形式的URL。

videoVRView.load(from: URL(string: "\(posts[selectedIndexPath].link)") 

哪些工作:

我從URL通過讀我的文件。

但是從,動作不工作,我已經嘗試以下操作:

if ((from: URL(string: "\(posts[selectedIndexPath].link)").hasPrefix("jpg"))! { 
    Swift.print("THIS IS A JPG") 


} 
else if ((from: URL(string: "\(posts[selectedIndexPath].link)") == "mp4") { 

    Swift.print("THIS IS A MP4") 

} 

沒有任何成功!

有人知道這是如何實現的嗎?

非常感謝=)

- 編輯 -

什麼即時試圖做的是個efollowing恢復:

在日emoment我撥打本地圖像通過:

 imageVRView.load(UIImage(named: "\(documentsPath)/\(fileName.lastPathComponent)"), 
    of: GVRPanoramaImageType.stereoOverUnder) 

我試着改用:

imageVRView.load(UIImage(named: "\(posts[selectedIndexPath].link)"), 
    of: GVRPanoramaImageType.stereoOverUnder) 

沒有成功。 。 。 。我需要通過這種方法調用圖像...任何想法? 非常感謝!

+1

'hasPrefix'測試像'jpgFile'和模式'mp4Stream'。你需要尋找後綴,而不是前綴。 ['hasSuffix'](https://developer.apple.com/reference/swift/string/1541149-hassuffix)。 – dasblinkenlight

+0

顯示'posts [selectedIndexPath] .link'的值。 – shallowThought

+0

你應該檢查本地資源的url UTI類型或mimeType,如果不是local,則從url響應中檢查mimeType.hasPrefix(「image」)。 –

回答

0

您可以使用列舉HTTPMethod HEAD,而不需要先下載數據,以檢查您的網址MIME類型URL標頭的URL請求:

let link = "https://www.dropbox.com/s/sk46eyglvijlrec/horse.jpg?dl=1" 
let url = URL(string: link)! 

var request = URLRequest(url: url) 
request.httpMethod = "HEAD" 
URLSession.shared.dataTask(with: request) { _ , response , _ in 
    guard let response = response, (response as? HTTPURLResponse)?.statusCode == 200 else { return } 
    DispatchQueue.main.async() { 
     print("mimeType", response.mimeType ?? "nil")   // image/jpeg 
     print("suggestedFilename:", response.suggestedFilename ?? "no suggestedFilename") // horse.jpg 
     print("expectedContentLength:", response.expectedContentLength ?? "nil") // 352614 
     print("textEncodingName:", response.textEncodingName ?? "nil") 
     print("url:", response.url ?? "nil")     // "https://dl.dropboxusercontent.com/content_link/RNrhGtvroTLU1Gww7eQo1N1ePRiix68zsqZJ1xWPjKm3pmOUNQwNVntbPuFG4jZ8/file?dl=1" 
    } 
}.resume() 
+0

感謝,似乎我沒有運氣我在我的代碼開頭使用類似的方式..。 我已經編輯我的問題,也許它會幫助嗎?我需要的是通過名稱方法調用圖像的url。 .. 非常感謝! – tibewww

+0

任何雖然爲什麼它不工作? – tibewww