将用户输入字符串转换为有效的文件名

时间:2013-03-15 14:52:33

标签: ios objective-c cocoa-touch nsstring nsfilemanager

在iOS上将用户输入字符串转换为有效文件名时需要考虑哪些特殊注意事项?有没有可以提供帮助的方法?我在NSStringNSFileManager上找不到任何明显的内容。

上下文允许用户在应用内保存搜索。在幕后,这些名称将转换为Core Data持久存储的名称。实际的文件名永远不会向用户公开。

提前致谢。

3 个答案:

答案 0 :(得分:2)

主要关注点应该是用户体验:用户可以键入任何内容来标识文件。当回到数据时,她希望看到与她输入的字符串完全相同的字符串。

处理此信息的最佳方法是将实际输入存储在其他位置,并使用映射来获取实际文件。

您可以使用保存在plist文件中的字典。字典将包含用户输入作为键,UUID作为值。然后使用UUID作为文件名保存该文件。通过这种方式,您可以确保文件名始终有效,用户可以输入任何内容,而无需担心文件名无效。

除了剥离无效字符之外的一个优点是用户可以使用例如“/”和“//”作为有效标识符,如果她感觉到的话。

答案 1 :(得分:1)

如果您只是保存搜索,则不需要文件或文件名。有几种方法可以做到这一点,但为什么不只是使用Core Data来保存搜索?您可以拥有“搜索”实体并在那里存储所有相关信息。

不需要文件,显然你已经快速使用核心数据了,所以也可以在这里使用它。

答案 2 :(得分:0)

替换非法字符。像这样:

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]]