2012-04-05 14 views
4

単純なファイル(テキストファイルなど)を管理するコードを実装しています。テキストファイルに余分なテキストを書き込まずに、場所、タグなどの情報をファイルに追加したいと思います。iOSのファイルに任意の属性を設定できますか?

これを行う最も簡単な方法は、ファイル属性に追加情報を追加することですが、可能かどうかはわかりません。

私はNSURLのsetResourceValue:forKey:error:で遊んでいましたが、実際にNSURLの定義済みキーだけがファイルの属性に何か書き込んでいるようです。だから、:

NSURL *fileURL; //suppose this points to something 
NSError *error; 
id resourceValue; 

[fileURL setResourceValue:@"recorded string" forKey:@"testingkey" error:&error]; 
[fileURL getResourceValue:&resourceValue forKey:@"testingkey" error:&error]; 
上記のコードで

、両方の機能setResourceValue:forKey:error:getResourceValue:forKey:error:リターンYES彼らは成功したが、resourceValueの最終値は、値が実際に記録されなかったことを意味しますnilに、ある意味。

iOSのファイルに自分の属性を設定する方法はありますか?そうでない場合は、ファイル自体を変更することなく、ファイルに余分な情報を同調させる良い(簡単な)方法は何でしょうか?

ありがとうございます!

+1

: http://www.cocoanetics.com/2012/03/reading-and-writing-extended-file-attributes/ –

+0

ありがとう!それは確かに私が必要なすべてです。 –

+0

@Marcelo設定後にこのコードから出力が得られます。 –

答えて

0

これは、この質問のためのサプリメントです:extended-file-attributes

この記事は、元のファイルの内容を変更するだけでなく、ファイルにいくつかの情報を記述する必要はありませんだけでなく、問題を解決する方法について詳細に分析しています。

あなたはこのように使用することができます

:これはあなたが必要とするすべてである

#include <sys/xattr.h> 

    if (!&NSURLIsExcludedFromBackupKey) { 
     // iOS <= 5.0.1 
     const char *filePath = [[URL path] fileSystemRepresentation]; 
     const char *name = "com.apple.MobileBackup"; 
     u_int8_t value = 1; 
     int result = setxattr(filePath, name, &value, sizeof(value), 0, 0); 
    } else { 
     // iOS >= 5.1 
     NSError *error = nil; 
     [URL setResourceValue:@YES 
         forKey:NSURLIsExcludedFromBackupKey 
         error:&error]; 
    } 
関連する問題