從NSFileManager
獲取文檔目錄中的文件。我得到了一組文件名,我可以將它們傳遞給另一個控制器。仍然我想從我的UITableViewCell
的特定文件通過NSURL
,因爲我傳遞了這些文件的名稱。我的文件是MP3。請幫幫我。如何在swift中從文檔目錄中的特定文件獲取NSURL
var listOfMP3Files: Array<String!>? // for Cell data
func fetchFilesFromFolder() {
var fileManager = NSFileManager.defaultManager()
var folderPathURL = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)[0] as! NSURL
var documentsContent = fileManager.contentsOfDirectoryAtPath(folderPathURL.path!, error: nil)
println(documentsContent)
if var directoryURLs = fileManager.contentsOfDirectoryAtURL(folderPathURL, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles, error: nil) {
println(directoryURLs)
var mp3Files = directoryURLs.map(){ $0.lastPathComponent }.filter(){ $0.pathExtension == "mp3" }
listOfMP3Files = mp3Files
println(mp3Files)
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var playerVC = (segue.destinationViewController as! UINavigationController).topViewController as! AVPlayerVC
var indexPath = tableView.indexPathForSelectedRow()
var objectForPass = listOfMP3Files![indexPath!.row] // default
if segue.identifier == "listenMusic" {
playerVC.object = objectForPass
}
}
UPDATE:
我更新了我的代碼,我可以得到jpg格式的文件。但我不知道如何獲得mp3文件。
我更新的代碼
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var playerVC = (segue.destinationViewController as! UINavigationController).topViewController as! PlayMusicViewController
var indexPath = tableView.indexPathForSelectedRow()
var objectForPass = listOfMP3Files![indexPath!.row] // default
//
var path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as? String
var getImage = path?.stringByAppendingPathComponent(objectForPass)
var image = UIImage(contentsOfFile: getImage!)
if segue.identifier == "listenMusic" {
playerVC.musicFile = objectForPass
playerVC.end = image
}
}
UPDATE2 我編輯我的代碼,我可以通過NSURL
的MP3文件,而在另一個UIViewController
我可以發揮他們。
下面有一個編輯的代碼
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var playerVC = (segue.destinationViewController as! UINavigationController).topViewController as! PlayMusicViewController
var indexPath = tableView.indexPathForSelectedRow()
var objectForPass = listOfMP3Files![indexPath!.row] // default
//
/* var path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as? String
var getImage = path?.stringByAppendingPathComponent(objectForPass)
var image = UIImage(contentsOfFile: getImage!) */
//
var fileM = NSFileManager.defaultManager()
var wayToFile = fileM.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)
var passMusicFileURL: NSURL?
if let documentPath: NSURL = wayToFile.first as? NSURL {
let musicFile = documentPath.URLByAppendingPathComponent(objectForPass)
println(musicFile)
passMusicFileURL = musicFile
}
if segue.identifier == "listenMusic" {
// playerVC.musicFile = objectForPass
playerVC.end = passMusicFileURL
}
}