4

単純なファイル (テキスト ファイルなど) を管理するコードを実装しています。テキスト ファイルに余分なテキストを書き込まずに、場所、タグなどの情報をファイルに追加したいと考えています。

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

私は 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のファイルに自分の属性を設定する方法はありますか? そうでない場合、ファイル自体を変更せずに、追加情報をファイルに同化する良い (簡単な) 方法は何でしょうか?

どうもありがとう!

4

1 に答える 1

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];
    }
于 2016-01-06T17:28:09.827 に答える