6

我写了一个简单的程序来帮助我调试。

#import "UIImage+saveScreenShotOnDisk.h"

@implementation UIImage (saveScreenShotOnDisk)

-(void)saveScreenshot{
    NSData * data = UIImagePNGRepresentation(self);
    [data writeToFile:@"foo.png" atomically:YES];
}

@end

执行后,我想知道它foo.png的位置。

我去了

~Library/Application Support

我找不到foo.png。它在哪里?

如果我做

BOOL result = [data writeToFile:@"foo.png" atomically:YES];

结果将是NO,这有点奇怪,因为模拟器不像 iPhone,可以在任何地方写。

4

5 回答 5

23

您需要将 NSData 对象指向要保存数据的路径:

NSString *docsDir;
NSArray *dirPaths;

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSString *databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:@"foo.png"]];
[data writeToFile:databasePath atomically:YES];

这会将您的文件保存在设备(或模拟器)上的应用程序文件夹中。

于 2012-10-11T06:39:02.550 回答
5

存储文件的默认位置是存储可执行文件的文件夹。

通过右键单击 Products->YourExecutable 查看可执行文件的存储位置:

屏幕截图 - 在 finder 可执行文件中显示

然后在finder中打开。

这里pawel.plist资源创建通过

NSArray *a = @[@"mybike", @"klapki", @"clapki", @"ah"];
[a writeToFile:@"pawel.plist" atomically:NO];

我从代码中完成的 pawel.plist 资源

于 2013-12-24T06:01:25.807 回答
2

对于 Swift,基于 Shachar 的回答:

let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] + "/foo.png"
data?.writeToFile(path, atomically: true)
于 2016-02-24T03:51:05.993 回答
1

你忘了提供你想写的位置或路径。检查这个writeToFile:options:error:

将接收器中的字节写入给定路径指定的文件。

- (BOOL)writeToFile:(NSString *)path options:(NSDataWritingOptions)mask error:(NSError **)errorPtr

参数

小路

The location to which to write the receiver's bytes.

面具

A mask that specifies options for writing the data. Constant components are described in “NSDataWritingOptions”.

错误指针

If there is an error writing out the data, upon return contains an NSError object that describes the problem.
于 2012-10-11T04:42:19.800 回答
1

您可以搜索“NSDocumentsDirectory”,我通常使用此方法搜索文档目录的路径,然后将我的文件名附加到它。在方法writeToFile:中,提供了这个附加的路径。然后使用iTunes>应用程序,滚动到底部,选择您的应用程序,您应该能够看到保存的文件。

PS:您应该在 plist 中设置一个 valur,指定您的应用程序使用手机存储。

于 2012-10-11T04:49:44.910 回答