如何在 iOS 的文档目录中保存带有唯一标签的文件?

Posted

技术标签:

【中文标题】如何在 iOS 的文档目录中保存带有唯一标签的文件?【英文标题】:How can i save file with unique tag in Document Directory in iOS? 【发布时间】:2014-10-31 10:43:49 【问题描述】:

注意:文件名由用户给出

在我的一个应用程序中,我需要在文档目录中创建具有任何唯一标签的文件(最好在字符串中给出标签!)。

我已经搜索过了,但没有运气。我知道如何在文档目录中创建文件,但卡在给它 uniqe 标签。

如果有人做过,请告诉我该怎么做。

【问题讨论】:

您可以将文件名添加为日期,例如mmddyyhhmmss。所以每个文件名都是唯一的。 您可以添加数字作为后缀,例如 abc_1 、 xyz_2 。每次创建文件时增加数字并将该数字保存到 NSUserDefault。这样你就可以实现你想要的。我知道你想要字符串作为标签,但它可能会有所帮助。 【参考方案1】:

我已经使用时间间隔来保存唯一的文件。

int timestamp = [[NSDate date] timeIntervalSince1970];

NSString *fileName = [NSString stringWithFormat:@"%d",timestamp];

编辑:

// Or As you said if fileName is given by user.

NSString *userFileName = [NSString stringWithFormat:@"%@_%d",USER_GIVEN_NAME,timestamp];

// Here USER_GIVEN_NAME is a string which is file name from user.

用户是否提供相同的名称无关紧要,因为每当您尝试保存文件时,时间的一部分会发生变化,您将获得唯一的时间间隔。

【讨论】:

文件名由用户指定。因此,如果可能,请提供其他解决方案。我想我需要更新我的 que! 还有一件事,如果再次保存相同的文件,它如何管理?? 这有什么问题?您只需在最后添加时间戳,例如[NSString stringWithFormat:@"%@_%d",FILE_NAME_BY_USER,timestamp];。它变得独一无二,因为时间戳永远不会相同。【参考方案2】:

您可以使用时间戳(作为 Kampai 的回答),或者您可以在文件名中附加日期以使名称独一无二,如下面的代码所示

NSCalendar *sysCalendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateFormatter *df = [[NSDateFormatter alloc]init];
df.calendar = sysCalendar;
[df setTimeZone:[NSTimeZone systemTimeZone]];
[df setDateFormat:@"mmddyyyyHHmmss"];
NSString *strDate = [df stringFromDate:[NSDate date]];

NSString *name = [NSString stringWithFormat:@"%@_%@",@"yourfilename",strDate];

也许这会对你有所帮助。

【讨论】:

timestamp 变量是int 的类型。它会在NSString *name = [NSString stringWithFormat:@"%@_%@",@"yourfilename",timestamp]; 行中为您提供类型说明符警告。请将%@ 替换为%d @Kampai 对不起,我复制了你的台词 :)

以上是关于如何在 iOS 的文档目录中保存带有唯一标签的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 模拟器中查看文档目录?

文件打开和文件保存

如何将数组保存到ios文档目录?

如何使 iOS 应用程序充当 Web 服务器

如何将带有colorbar的matplotlib pgf导入到latex文档中

是否可以将 iOS 文件共享功能限制为文档目录中的子文件夹?