0

ALAsset オブジェクトの配列を読み取っています (NSMutableArray *assets;ヘッダー ファイルのように宣言されています)。ALAssets ディクショナリの内容を後で取得できるようにファイルに出力するために、この例に従おうとしています。ディクショナリ キーをファイル (コメント アウト) に適切に書き込むことはできますが、値を書き込むことはできないことに注意してください。

viewDidLoad() メソッドの最後に実行されるコードは次のとおりです。

// Create path to Documents
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

if ([paths count] > 0) {
    NSString *dictPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"dict.out"];
    NSDictionary *aDict = [[assets objectAtIndex:0] valueForProperty:ALAssetPropertyURLs];

    for (id key in aDict) {
        NSLog(@"key: %@, value: %@", key, [aDict valueForKey:key]);  
        //[key writeToFile:dictPath atomically:YES];        <- THIS LINE WORKS
        [[aDict valueForKey:key] writeToFile:dictPath atomically:YES];            
    }
}
else
    NSLog(@"nope");    // The program doesn't get here.

ログは次のようになります。

2011-11-17 23:44:41.340 PhotoApp[542:12803] キー: public.jpeg、値: assets-library://asset/asset.JPG?id=1000000001&ext=JPG

2011-11-17 23:44:41.361 PhotoApp[542:12803] -[NSURL writeToFile:atomically:]: 認識されないセレクターがインスタンス 0x6455650 に送信されました

2011-11-17 23:44:41.370 PhotoApp[542:12803] * キャッチされない例外 'NSInvalidArgumentException' によるアプリの終了、理由: '-[NSURL writeToFile:atomically:]: 認識されないセレクターがインスタンス 0x6455650 に送信されました'


編集:問題があるかどうかはわかりませんが、プロジェクトはiPadを対象としており、シミュレーターで実行されています。

4

2 に答える 2