【问题标题】:How to get the file name of an AVURLAsset?如何获取 AVURLAsset 的文件名?
【发布时间】:2013-10-04 00:29:09
【问题描述】:

我像这样获取 AVURLAsset 的 URL:

NSURL *url = [[asset defaultRepresentation] url];

在控制台中,AVURLAsset 的 url 如下所示:

assets-library://asset/asset.mov?id=A3210417-4BAC-1C78-BD93-4BDD286247D9&ext=mov

我尝试从这样的 URL 获取带有扩展名的文件名:

NSString *last = [[url URLByDeletingPathExtension] lastPathComponent];
NSString *tnFileName = [NSString stringWithFormat:@"%@_tn.%@", last, url.pathExtension];

这是 tnFileName 的控制台日志:

tnFileName =asset_tn.mov

如何获取 A3210417-4BAC-1C78-BD93-4BDD286247D9 部分的字符串?或者资产是否有不同的唯一 ID 用于缓存资产的静态图像?

为了澄清,我需要将缩略图存储到磁盘,并且我想使用与资产匹配的名称。

【问题讨论】:

  • 我认为你的意思不是AVURLAsset。我想你的意思是ALAsset,是吗?

标签: objective-c avfoundation nsurl avasset avurlasset


【解决方案1】:

像这样玩字符串:

NSString * urlName = @"assets-library://asset/asset.mov?id=A3210417-4BAC-1C78-BD93-

4BDD286247D9&ext=mov";

    NSArray *arr = [urlName componentsSeparatedByString:@"id"];

    NSString *str = [arr lastObject];

    NSArray *arr1 = [str componentsSeparatedByString:@"&"];

    NSLog(@"array is %@",arr1);

    NSString *str2 = [[arr1 objectAtIndex:0] substringFromIndex:1];

    NSLog(@"str2 is %@",str2);

输出将是 A3210417-4BAC-1C78-BD93-4BDD286247D9 :)

【讨论】:

  • downvoter 请让我知道这是什么问题,所以我会相应地纠正,
【解决方案2】:

试试这样:

NSString * urlName = @"assets-library://asset/asset.mov?id=A3210417-4BAC-1C78-BD93-

4BDD286247D9&ext=mov";

NSArray *arr = [urlName componentsSeparatedByString:@"id"];

NSString *str = [arr lastObject];

NSArray *arr1 = [str componentsSeparatedByString:@"&"];

NSLog(@"array is %@",arr1);

NSString *str2 = [[arr1 objectAtIndex:0] substringFromIndex:1];

NSLog(@"str2 is %@",str2);

【讨论】:

  • 老实说,使用 NSTask 进行一些字符串操作似乎是一件非常疯狂的事情。
  • 是正确的,但是使用shell脚本执行结果会非常快。
  • 不,比起在进程中做它会慢,除非你写了一些糟糕的代码
  • 我的观点是,如果有大量数据,那么它会很快
  • 真的不会。使用 NSTask 固有地带来了打包适合跨进程边界传递的字符串并启动该新进程的开销。该应用程序可以像执行任何外部任务一样快地执行字符串处理,而且没有我刚才描述的开销。 Cocoa 附带了一套广泛的字符串操作工具。学习它们。 使用它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
相关资源
最近更新 更多