0

UITableViewにtmpディレクトリの内容を表示していますが、各セルのファイルパスを取得できません。

セルが押されると、私のアプリはMPMoviePlayerでファイルを再生する必要がありますが、そうではありません。

これは私がこれまでに持っているものです:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


NSString *tmpDirectory = NSTemporaryDirectory();
fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:tmpDirectory error:nil]; //nsarray

NSString *movieURL = [fileList objectAtIndex:indexPath.row];

NSURL *url = [NSURL URLWithString:movieURL];

_moviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:url];

[self presentModalViewController:_moviePlayerViewController animated:YES];
}

NSlogはビデオの名前を教えてくれますが、パスは教えてくれません。睡眠不足から考えすぎているような気がします。

4

3 に答える 3

2

これを使用する場合:

NSString *movieURL = [fileList objectAtIndex:indexPath.row];

一時ディレクトリ内のファイル名のみが返されるため、次のように使用します。

NSString *movieURL = [tmpDirectory stringByAppendingPathComponent:[fileList objectAtIndex:indexPath.row]];

NSURL*url = [NSURL fileURLWithPath:movieURL];
于 2013-01-15T06:09:30.007 に答える
1

次のようにコードを変更します。

    NSString *tmpDirectory = NSTemporaryDirectory();
    NSLog(@"%@",tmpDirectory);
    NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:tmpDirectory error:nil]; //nsarray

    NSString *movieURL = [fileList objectAtIndex:indexPath.row];
    NSString *path=[tmpDirectory stringByAppendingPathComponent:movieURL];
于 2013-01-15T06:16:31.517 に答える
1
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let tmpDirectory: String = NSTemporaryDirectory()
    print("\(tmpDirectory)")
    var fileList: [Any]? = try? FileManager.default.contentsOfDirectory(atPath: tmpDirectory)
    //nsarray
    let movieURL: String? = (fileList?[indexPath.row] as? String)
    let path: String = URL(fileURLWithPath: tmpDirectory).appendingPathComponent(movieURL!).absoluteString
    print(path)
}
于 2017-04-08T11:31:27.753 に答える