我写了一个简单的程序来帮助我调试。
#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不同,可以在任何地方书写。
答案 0 :(得分:20)
您需要将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];
这会将您的文件保存在设备(或模拟器)上的应用程序文件夹中。
答案 1 :(得分:5)
存储文件的默认位置是存储可执行文件的文件夹。
通过右键单击Products-> YourExecutable:
,查看存储可执行文件的位置
然后在finder中打开。
此处pawel.plist
资源通过
NSArray *a = @[@"mybike", @"klapki", @"clapki", @"ah"];
[a writeToFile:@"pawel.plist" atomically:NO];
答案 2 :(得分:2)
对于Swift,根据Shachar的回答:
let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] + "/foo.png"
data?.writeToFile(path, atomically: true)
答案 3 :(得分: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”.
<强> errorPtr 强>
If there is an error writing out the data, upon return contains an NSError object that describes the problem.
答案 4 :(得分:1)
您可以搜索“NSDocumentsDirectory”,我通常使用此方法搜索文档目录的路径,然后将我的文件名附加到其中。在方法writeToFile:
中,提供了此附加路径。然后使用iTunes&gt;应用程序,滚动到底部,选择您的应用程序,您应该能够看到保存的文件。
PS:您应该在plist中设置一个valur,指定您的应用程序使用手机存储。