5

在 iOS 上将用户输入字符串转换为有效文件名时需要考虑哪些特殊注意事项?有什么方法可以提供帮助吗?NSString我在or上找不到任何明显的东西NSFileManager

上下文允许用户在应用程序中保存搜索。在幕后,这些名称被转换为 Core Data 持久存储的名称。实际的文件名永远不会暴露给用户。

提前致谢。

4

3 回答 3

2

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

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

您可以只使用保存在 plist 文件中的字典。字典将包含用户输入作为键和 UUID 作为值。然后使用 UUID 作为文件名保存该文件。这样您就可以确保文件名始终有效,并且用户可以键入任何她想要的内容,而不必担心文件名无效。

与仅去除无效字符相比,一个优点是用户可以使用例如“/”和“//”作为有效标识符,如果她愿意的话。

于 2013-03-15T15:08:59.937 回答
1

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

不需要文件,而且您显然已经掌握了使用核心数据的速度,所以在这里也可以使用它。

于 2013-03-15T14:58:27.120 回答
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]]
于 2013-03-15T14:56:52.707 回答