为什么我不能将文件保存到我的iOS apps / Documents目录?

问题描述 投票:1回答:2

我正在编写一个可以访问iOS根系统的应用程序,用户应该能够将文件保存到他的文档目录中。我正在使用此代码将文件保存到文档目录。

对于文字:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                                 NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
[self.filePath writeToFile:[NSString stringWithFormat:@"%@/%@", documentsDirectory, [self.filePath lastPathComponent]]
                                           atomically:YES
                                             encoding:NSUTF8StringEncoding error:nil];

对于其他文件:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                                 NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
[self.filePath writeToFile:[NSString stringWithFormat:@"%@/%@", documentsDirectory,[self.filePath lastPathComponent]]
                                           atomically:YES];

我的问题是我可以保存.txt文件,但不保存其他文件。如果我使用保存文本方法保存例如.plist文件,则联系人将替换为文件的目录路径。当我保存图片或任何其他文件时,它是不可读的。有没有一种很好的方法来保存文件而不会破坏它们?

ios writetofile
2个回答
4
投票

这里有一个保存图像的示例:

假设您将图像的内容导入NSData对象:

NSData *pngData = UIImagePNGRepresentation(image);

然后将其写入文件:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory 
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"image.png"]; //Add the file name
[pngData writeToFile:filePath atomically:YES]; //Write the file

有关更详细的说明,请查看这些问题:

Write a file on iOS

Save An Image To Application Documents Folder From UIView On IOS


7
投票

你正在调用[self.filePath writeToFile:],因此将filePath变量的内容写入文件。

你应该做的事情如下:

[contents writeToFile:...]
© www.soinside.com 2019 - 2024. All rights reserved.