8
A
回答
5
更新:正如yeonsh注意到的,從iOS 5.0開始有更好的方法。此答案與iOS < 5.0相關。
您可以從中提取ALAsset的URL,但所有的文件名是相同的,在表格上
資產庫://asset/asset.JPG ID = 1000000001 & EXT = JPG
如果你因爲某些原因需要不同的文件名,請嘗試的內外範例:
#import <Foundation/Foundation.h>
@interface NSURL (NSURL_Asset)
- (NSURL*) toExternalForm;
- (NSURL*) fromExternalForm;
- (NSString*) toExternalFilename;
@end
#import "NSURL+Asset.h"
#import "URLParser.h" // from http://iphone.demay-fr.net/2010/04/parsing-url-parameters-in-a-nsstring/
static NSString *const EXTERNAL_TOKEN = @"/assetExternalForm/";
@implementation NSURL (NSURL_Asset)
// assets-library://asset/asset.JPG/assetExternalForm/1000000001.JPG -> assets-library://asset/asset.JPG?id=1000000001&ext=JPG
- (NSURL*) fromExternalForm {
if([self.scheme isEqualToString:@"assets-library"]) {
NSRange slash = [self.absoluteString rangeOfString:EXTERNAL_TOKEN options:NSBackwardsSearch];
if(slash.location != NSNotFound) {
NSRange dot = [self.absoluteString rangeOfString:@"." options:NSBackwardsSearch];
if(dot.location != NSNotFound) {
NSString* extention = [self.absoluteString substringFromIndex:(dot.location + dot.length)];
NSString* identifier = [self.absoluteString substringWithRange:NSMakeRange(slash.location + slash.length, dot.location - (slash.location + slash.length))];
return [NSURL URLWithString:[NSString stringWithFormat:@"%@?id=%@&ext=%@", [self.absoluteString substringToIndex:slash.location], identifier, extention]];
}
}
}
return self;
}
// assets-library://asset/asset.JPG?id=1000000001&ext=JPG -> assets-library://asset/asset.JPG/assetExternalForm/1000000001.JPG
- (NSURL*) toExternalForm {
if([self.scheme isEqualToString:@"assets-library"]) {
NSRange range = [self.absoluteString rangeOfString:@"?"];
if(range.location != NSNotFound) {
URLParser *parser = [[[URLParser alloc] initWithURLString:self.absoluteString] autorelease];
NSString* extention = [parser valueForVariable:@"ext"];
NSString* identifier = [parser valueForVariable:@"id"];
if(extention != NULL && identifier != NULL) {
return [NSURL URLWithString:[NSString stringWithFormat:@"%@%@%@.%@", [self.absoluteString substringToIndex:range.location], EXTERNAL_TOKEN, identifier, extention]];
}
}
}
return self;
}
// assets-library://asset/asset.JPG?id=1000000001&ext=JPG -> 1000000001.JPG
- (NSString*) toExternalFilename {
if([self.scheme isEqualToString:@"assets-library"]) {
NSRange range = [self.absoluteString rangeOfString:@"?"];
if(range.location != NSNotFound) {
URLParser *parser = [[[URLParser alloc] initWithURLString:self.absoluteString] autorelease];
NSString* extention = [parser valueForVariable:@"ext"];
NSString* identifier = [parser valueForVariable:@"id"];
if(extention != NULL && identifier != NULL) {
return [NSString stringWithFormat:@"%@.%@", identifier, extention];
}
}
}
return NULL;
}
@end
注意,你並不需要一個文件名來讀取ALAsset的內容。使用ALAsset.defaultRepresentation.getBytes方法。
33
從iOS的5.0你可以從ALAssetRepresentation類文件。
ALAssetRepresentation *rep = [anAssetItem defaultRepresentation];
NSString *fileName = [rep filename];
相關問題
- 1. 如何檢索文件名
- 2. Xcode IOS5檢索文件名
- 3. NodeJS readFile()檢索文件名
- 4. 檢測通過ALAsset
- 5. Python檢測並檢索打開的csv文件的文件名
- 6. 檢索文件名的JavaScript/jQuery的
- 7. 檢索bash/shell編程的文件名
- 8. 檢索文件名中的變量
- 9. 自定義文件名的ALAsset同時加入到ALAssetGroup
- 10. 從iPhone中的ALAsset中檢索的URL顯示圖像
- 11. 從iOS中的ALAsset中檢索的URL播放視頻
- 12. 高效檢索和使用文件名
- 13. 從XmlTextReader中檢索流文件名稱
- 14. 用Javascript檢索文件名(無URL?)
- 15. 檢索文件名列格式Gridview
- 16. 從php json文件檢索名稱ID
- 17. fileName檢索多個文件名
- 18. makefile迭代並檢索文件名
- 19. Python文件路徑和名稱檢索
- 20. 檢索一個BLOB文件名
- 21. 從ZipFile中檢索文件名
- 22. 使用XSLT檢索XML文件名稱
- 23. 使用RODBC檢索MS Access文件名
- 24. 通過MINIX上的文件名檢索文件的inode編號
- 25. 檢索與文件指針關聯的文件的名稱
- 26. 如何檢索給定文件夾中的文件名
- 27. 使用C檢索文件夾中的所有文件名#
- 28. 如何檢索特定文件擴展名的文件的文件路徑?
- 29. 將數據導出到CSV文件並檢索文件名
- 30. 嘗試檢索文件名時文件未上傳
@Thomas:我需要將多個圖像作爲附件添加到電子郵件的文件名。如何通過ALAssets訪問這些文件名?謝謝 – jarryd 2011-02-19 16:32:31