8
A
答えて
5
アップデート:下記のyeonshのメモのとおり、iOS 5.0からはより良い方法があります。この回答は、iOS < 5.0に関連しています。
フォーム
資産ライブラリに、あなたがALAssetからURLを抽出することができますが、すべてのファイル名が同じである://asset/asset.JPG ID =十億一& EXT = JPG
を?何らかの理由であなたが別のファイル名が必要な場合は、内外のパラダイムを作ってみてください:あなたはALAssetの内容を読み取るために、ファイル名を必要としない
#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.defaultRepresentation.getBytesメソッドを使用します。
33
iOS 5.0から、ALAssetRepresentationクラスからファイルを取得できます。
ALAssetRepresentation *rep = [anAssetItem defaultRepresentation];
NSString *fileName = [rep filename];
関連する問題
- 1. ALAssetからビデオを取得する
- 2. 共有フォトストリームALAssetのALAssetRepresentationを取得するには?
- 3. ファイル名の取得方法
- 4. ファイル名の取得方法
- 5. 取得ファイル名が
- 6. ALAsset HDRイメージを取得していないか
- 7. AlAssetライブラリの問題
- 8. シート名のExcelファイルのFilePathを取得
- 9. Pythonでのファイルのフォルダ名を取得
- 10. openfiledialogでファイル名を取得
- 11. Apache Beam取得元ファイル名
- 12. QFileDialog:ファイル名を取得
- 13. NodeJS readFile()ファイル名を取得
- 14. プロジェクトVBAファイル名を取得
- 15. perticularセルのファイル名を取得
- 16. FTPからファイル名のリストを取得
- 17. .ttfファイルのフォント名を取得
- 18. アップロードサーバサイドの後にPluploadファイル名を取得
- 19. ファイルの名前を取得する
- 20. 拡張クラスのファイル名を取得
- 21. シェルで半分のファイル名を取得
- 22. PHAsset元のファイル名を取得
- 23. 一時ファイル名の取得方法は?
- 24. Pythonのファイルパスからファイル名を取得
- 25. cordova mediapicker実際のファイル名を取得
- 26. PHPファイル名の取得方法
- 27. ALAsset Video Compression
- 28. インターネットエクスプローラのファイル入力からファイル名のみを取得
- 29. AndroidのPHPファイルからすべてのファイル名を取得
- 30. MINIXのファイル名でファイルのinode番号を取得する
@トーマス:電子メールに添付ファイルとして複数の画像を追加するには、ファイル名が必要です。これらのファイル名はALAssetsを介してどのようにアクセスされますか?ありがとう – jarryd
MFMailComposeViewController.addAttachmentDataメソッドには、ALAssetのNSDataが必要です。次に、 'any'ファイル名とmimeTypeが必要です。したがって、上記のtoExternalFormメソッドを変更してファイル名(例: '1000000001.JPG')を返し、ファイル拡張子をmimeType、 '.JPG'から - > image/jpegにマップするメソッドを作成します。 – ThomasRS
@トーマス:これはどのように使うべきですか?私は現在のクラスでtoExternalFormメソッドを使うことができますか、@implementation NSURLは何ですか?私が現在のクラス(メソッドだけ)で使うことができれば、self.schemeとは何ですか?どうもありがとう。 – jarryd