iOSでユーザー入力文字列を有効なファイル名に変換するときに考慮する必要がある特別な考慮事項は何ですか?役立つ方法はありますか?NSString
またはに明らかなものは見つかりませんでしたNSFileManager
。
コンテキストにより、ユーザーはアプリ内で検索を保存できます。舞台裏では、これらの名前はコアデータ永続ストアの名前に変換されます。実際のファイル名がユーザーに公開されることはありません。
前もって感謝します。
iOSでユーザー入力文字列を有効なファイル名に変換するときに考慮する必要がある特別な考慮事項は何ですか?役立つ方法はありますか?NSString
またはに明らかなものは見つかりませんでしたNSFileManager
。
コンテキストにより、ユーザーはアプリ内で検索を保存できます。舞台裏では、これらの名前はコアデータ永続ストアの名前に変換されます。実際のファイル名がユーザーに公開されることはありません。
前もって感謝します。
主な関心事はユーザーエクスペリエンスです。ユーザーはファイルを識別するために何でも入力できます。データに戻ると、彼女は入力したのとまったく同じ文字列が表示されることを期待していました。
この情報を処理する最良の方法は、実際の入力を別の場所に保存し、マッピングを使用して実際のファイルにアクセスすることです。
plistファイルに保存されている辞書を使用することもできます。ディクショナリには、キーとしてのユーザー入力と値としてのUUIDが含まれます。次に、ファイル名としてUUIDを使用してファイルが保存されます。このようにして、ファイル名が常に有効であり、ユーザーが無効なファイル名を恐れることなく、好きなように入力できることを確認できます。
無効な文字を削除するだけの利点は、ユーザーが必要に応じて、たとえば「/」や「//」を有効な識別子として使用できることです。
検索を保存するだけの場合は、ファイルやファイル名は必要ありません。これを行うにはいくつかの方法がありますが、検索を保存するためにCoreDataを使用しないのはなぜですか?「検索」エンティティを作成して、そこにすべての関連情報を保存することができます。
ファイルは必要ありません。コアデータの使用についてはすでに理解しているので、ここでも使用してください。
不正な文字を置き換えます。このようなもの:
filename = [[filename componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] componentsJoinedByString:@"" ];
filename = [[filename componentsSeparatedByCharactersInSet:[NSCharacterSet illegalCharacterSet]] componentsJoinedByString:@"" ];
filename = [[filename componentsSeparatedByCharactersInSet:[NSCharacterSet symbolCharacterSet]] componentsJoinedByString:@"" ];
fileURLString = [NSTemporaryDirectory() stringByAppendingPathComponent:filename];
fileURL = [NSURL URLWithString:fileURLString];
ファイルが存在するかどうかを確認してください。このようなもの:
[[NSFileManager defaultManager] fileExistsAtPath:[fileURL absoluteString]]