Objective c 使用NSTemporaryDirectory时,我可以使用自己的文件名吗

Objective c 使用NSTemporaryDirectory时,我可以使用自己的文件名吗,objective-c,ios,Objective C,Ios,我正在生成一个PDF文件,并将其保存到我的设备中,然后再从我的应用程序中发送电子邮件。目前,它没有手动或自动清除,因此我正在查看NSTemporaryDirectory。我查看了各种网站,也在这里寻找我的具体问题的答案,但找不到它 我有以下功能: +(NSString *)getTempFilePathName { NSString *tempFilePathName = nil; NSString *tempFileTemplate = [NSTemporaryDirector

我正在生成一个PDF文件,并将其保存到我的设备中,然后再从我的应用程序中发送电子邮件。目前,它没有手动或自动清除,因此我正在查看NSTemporaryDirectory。我查看了各种网站,也在这里寻找我的具体问题的答案,但找不到它

我有以下功能:

+(NSString *)getTempFilePathName {
    NSString *tempFilePathName = nil;
    NSString *tempFileTemplate = [NSTemporaryDirectory() stringByAppendingPathComponent:@"tempfile.XXXXXX"];
    const char *tempFileTemplateCString = [tempFileTemplate fileSystemRepresentation];
    char *tempFileNameCString = (char *)malloc(strlen(tempFileTemplateCString) + 1);
    strcpy(tempFileNameCString, tempFileTemplateCString);
    int fileDescriptor = mkstemp(tempFileNameCString);
    if (fileDescriptor != -1) {
        // File opened successfully
        tempFilePathName = [[NSFileManager defaultManager] stringWithFileSystemRepresentation:tempFileNameCString length:strlen(tempFileNameCString)];
        close(fileDescriptor);
    }
    free(tempFileNameCString);

    return tempFilePathName;    
}
这将返回一个NSString,其中包含临时文件的完整路径和文件名,以文件名的“XXXXXX”组件结尾,并替换为字母和数字的唯一组合。当我用它来保存PDF文件时,我需要修复扩展名为“.PDF”的“XXXXXX”位。最好我也要指定文件名本身,比如“Order-123.PDF”


我可以编辑我的方法以传入文件名并在stringByAppendingPathComponent参数中使用它吗?每次调用此方法生成的目录名是否唯一

我自己解决了这个问题。在调用上述例程的行之后,我执行以下操作:

NSString *newFilePath = [tempNameStub stringByAppendingPathExtension:@"pdf"];   

这将
.pdf
添加到末尾。

我自己解决了这个问题。在调用上述例程的行之后,我执行以下操作:

NSString *newFilePath = [tempNameStub stringByAppendingPathExtension:@"pdf"];   

它在结尾添加了
.pdf

我不得不问为什么?临时目录的全部要点是,只要需要,就保持文件处于打开状态,然后所有赌注都结束。如果您想再次引用该文件,缓存文件夹可能是更好的选择。我正在生成的文件已创建并通过电子邮件发送,因此无需再次访问。很高兴iOS把它放在这个地方,3天后它会自动清理。所以我认为这是最好的方法。唯一的问题是,它需要一个PDF扩展名,以便电子邮件文件能够被正确识别,并且能够被任何接收到它的人加载,而不必重命名它。我不得不问为什么?临时目录的全部要点是,只要需要,就保持文件处于打开状态,然后所有赌注都结束。如果您想再次引用该文件,缓存文件夹可能是更好的选择。我正在生成的文件已创建并通过电子邮件发送,因此无需再次访问。很高兴iOS把它放在这个地方,3天后它会自动清理。所以我认为这是最好的方法。唯一的问题是,它需要一个PDF扩展名,以便电子邮件文件能够被正确识别,并且能够被任何接收到它的人加载,而无需重命名它。