将数据写入文件Cocoa?

将数据写入文件Cocoa?,cocoa,encryption,nsdata,writetofile,Cocoa,Encryption,Nsdata,Writetofile,我需要使用writeToFile:方法将数据(已加密)写入文件。但是,假设我有: NSData *encryptedData = [data AES256EncryptWithKey:key]; 我通过以下方式将encryptedData写入文件: [encryptedData writeToFile:@"file.txt" automatically:YES]; 出于某种原因,这不会将数据写入“file.txt”。这是一个非常简单的问题,我知道我缺少一些超基本的东西。如果file.txt实

我需要使用
writeToFile:
方法将数据(已加密)写入文件。但是,假设我有:

NSData *encryptedData = [data AES256EncryptWithKey:key];
我通过以下方式将encryptedData写入文件:

[encryptedData writeToFile:@"file.txt" automatically:YES];

出于某种原因,这不会将数据写入“file.txt”。这是一个非常简单的问题,我知道我缺少一些超基本的东西。如果file.txt实际上不存在,则必须创建它。

这可能与Cocoa或
NSData
无关

在Unix(如Mac OS X)上,以
/
开头的路径是绝对路径。以
~
开头的路径相对于当前用户的主目录。其他任何内容(如
file.txt
)都与当前目录相关。当从Xcode运行某些东西时,这是可执行文件的路径(编译器的输出路径)

因此,要将其写入桌面,需要:

[encryptedData writeToFile:@"~/Desktop/file.txt" atomically:YES];
[encryptedData writeToFile:@"~/Documents/file.txt" atomically:YES];
对于documents文件夹,这将是:

[encryptedData writeToFile:@"~/Desktop/file.txt" atomically:YES];
[encryptedData writeToFile:@"~/Documents/file.txt" atomically:YES];
不要忘记路径也是区分大小写的

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
返回一个布尔值,说明它是否成功。我从这里开始,如果你看到一个“是”,那么文件就成功地写入了某个地方

如果这不起作用,那么我会再次检查您试图编码的对象是否支持该协议。如果您的对象不支持NSCoding,请查看博客文章,了解添加NSCoding的简单方法


而且它的“原子性”不是“自动”:)

是的,我知道,我编辑过它。我错误地复制和粘贴了我的项目。然而,它仍然没有任何作用。@Bobby,我改变了答案。硬编码路径是个坏主意。尝试以下操作:
[[NSHomeDirectory()stringByAppendingPathComponent:@“Desktop”]stringByAppendingPathComponent:@“file.txt”]
您可能需要调用StringByAppendingTildInPath?或者自己展开波浪形图来测试它是否有效。Rob,快速提问,我如何在“file.txt”上添加扩展名,这样我就可以得到任何文件名加上“.myextension”?比如[[NSHomeDirectory()stringByAppendingPathComponent:@“Desktop”]stringByAppendingPathComponent:filename]->然后键入:@”";? 我如何在我想要的文件名上添加扩展名(作为nsstring)您所说的“不写”是什么意思?名为
file.txt
的文件是否显示在可执行文件的目录中?我需要“file.txt”显示在我的桌面和文档文件夹中。对不起,我不是很清楚谢谢你的回答亚伦,我来试试这个。