4

命名与 NSManagedObject 关联的文件的最佳方法是什么。NSManagedObject 将保存此文件的 URL。

但我需要为我的文件创建一个唯一的文件名。是否有某种我可以使用的自动增量 ID?我应该使用 mktemp(但它不是临时文件)还是尝试将 NSManagedObjectId 转换为文件名?但我担心会有特殊字符可能会导致问题。

你有什么建议?

编辑:我有很多这样的 NSManagedObjects 并且每个都有自己的图像,所以我想为每张图片生成一个唯一的名称。

4

4 回答 4

3

您可以使用NSProcessInfo来生成 guid:

[[NSProcessInfo processInfo] globallyUniqueString]

要引用一个文件,我建议将 guid 保留为NSManagedObject属性,然后从应用程序支持目录中引用该名称的文件。

于 2010-05-09T05:51:12.870 回答
2

有一个很好的方法可以做到这一点,一个较早的答案几乎就是这样——为每个图像而不是整个过程生成一个 GUID。每当您需要一个唯一的字符串时调用此方法,然后将其存储在托管对象中:

+ (NSString *)getUUID
{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [(NSString *)string autorelease];
}

我用它来存储捕获的电影和图像。

于 2010-09-08T02:07:39.650 回答
0

我考虑过使用时间来生成唯一的文件名,但我不喜欢这个解决方案,例如,如果时间被重置或更改,则有可能获得两次相同的文件名。

我很惊讶没有在网上找到有关此主题的更多信息。

于 2010-05-11T04:57:04.363 回答
0

从 iOS5 开始,现在可以选择将大 blob 存储在外部记录文件中。CoreData 根据记录的大小决定是否将记录存储在 sqlite 中。

使用内置 CoreData 选项将 blob 存储在外部位置

于 2012-09-25T04:02:37.700 回答