我需要一种快速简便的方法来在iOS上存储具有唯一文件名的文件.我需要在文件前面加一个字符串,然后将生成的唯一标识符附加到文件的末尾.我希望NSFileManager有一些方便的方法来做这件事,但我似乎找不到.

我看了createFileAtPath:contents:attributes:个,但不确定这些属性是否会给我唯一的文件名.

推荐答案

创建自己的文件名:

CFUUIDRef uuid = CFUUIDCreate(NULL);
CFStringRef uuidString = CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
NSString *uniqueFileName = [NSString stringWithFormat:@"%@%@", prefixString, (NSString *)uuidString];
CFRelease(uuidString);

@darrinm在 comments 中提出了一个更简单的替代方案:

NSString *prefixString = @"MyFilename";

NSString *guid = [[NSProcessInfo processInfo] globallyUniqueString] ;
NSString *uniqueFileName = [NSString stringWithFormat:@"%@_%@", prefixString, guid];

NSLog(@"uniqueFileName: '%@'", uniqueFileName);

NSLog输出:

注意:iOS6引入了NSUID类,可以用来代替CFUUID.

NSString *guid = [[NSUUID new] UUIDString];

Objective-c相关问答推荐

如何从 Cocoa 的 NSDictionary 中获取特定键的值?

NSNumberFormatter 和 'th' 'st' 'nd' 'rd' (序数)数字结尾

UIAlertView 按钮操作

Objective-C 对象的列表 Select 器

在 iOS8 上,以横向模式显示我的应用程序会隐藏状态栏,但在 iOS 7 上,状态栏会同时显示在两个方向上

在 Interface Builder 中设计 UITableView 的section header

在 Xcode 中为无法识别的 Select 器创建断点

从 NSString 创建 SHA1 哈希

如何将 UISlider 垂直放置?

烦人的[Environment: Sandbox]提示

UIRefreshControl - 在 iOS 7 中 pull 刷新

MKMapView MKPointAnnotation 点击​​事件

UITextView 禁用文本 Select

检测代码是否在 Objective-C 的主线程上运行的正确方法是什么? (iOS)

为什么是 [object doSomething] 而不是 [*object doSomething]?

UIFont 的磅值到底是多少?

每个 ivar 都必须是一个属性吗?

Objective-c 中 SEL 类型的属性

有没有办法在不使用 UINavigationController 的情况下更改 Storyboard 中 UINavigationBar 的高度?

Facebook SDK 登录永远不会在 iOS 9 上回调我的应用程序