我试图在Swift中访问temp目录。在Objective-C中,我可以使用以下代码进行操作:
- (NSString *)tempDirectory { NSString *tempDirectoryTemplate = [NSTemporaryDirectory() stringByAppendingPathComponent:@"XXXXX"]; const char *tempDirectoryTemplateCString = [tempDirectoryTemplate fileSystemRepresentation]; char *tempDirectoryNameCString = (char *)malloc(strlen(tempDirectoryTemplateCString) + 1); strcpy(tempDirectoryNameCString, tempDirectoryTemplateCString); char *result = mkdtemp(tempDirectoryNameCString); if (!result) { return nil; } NSString *tempDirectoryPath = [[NSFileManager defaultManager] stringWithFileSystemRepresentation:tempDirectoryNameCString length:strlen(result)]; free(tempDirectoryNameCString); return tempDirectoryPath; }
但是,对于将类型从Objective-C转换为Swift const char *或从Swift转换为类型,我有些困惑 CMutablePointer<CChar>。我应该查看任何文件吗?
const char *
CMutablePointer<CChar>
谢谢。
怎么样:
func createTempDirectory() -> String? { let tempDirectoryTemplate = NSTemporaryDirectory().stringByAppendingPathComponent("XXXXX") let fileManager = NSFileManager.defaultManager() var err: NSErrorPointer = nil if fileManager.createDirectoryAtPath(tempDirectoryTemplate, withIntermediateDirectories: true, attributes: nil, error: err) { return tempDirectoryTemplate } else { return nil } }
它没有回答您有关char *的问题,但它更干净…
NSFileManager参考在这里。