2012-10-11 22 views
5

Tôi đã viết một chương trình đơn giản để giúp tôi gỡ lỗi.[NSData writeToFile] ghi vào đâu?

#import "UIImage+saveScreenShotOnDisk.h" 

@implementation UIImage (saveScreenShotOnDisk) 

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

@end 

Sau khi thực hiện, tôi muốn biết vị trí foo.png.

tôi đến

~Library/Application Support 

và tôi không thể tìm thấy foo.png. Nó đâu rồi?

Nếu tôi làm

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

kết quả sẽ là NO, đó là loại kỳ lạ cho rằng các mô phỏng, không giống như iPhone, có thể viết bất cứ nơi nào.

+1

Đó là trong thư mục làm việc hiện tại của bạn (CWD), mà thường là từ nơi chương trình của bạn được khởi chạy. – sidyll

+0

Nó không có ở đó, và nếu tôi làm BOOL result = [data writeToFile: @ "foo.png" nguyên tử: YES]; kết quả là KHÔNG. –

+0

Xem đây: [http://stackoverflow.com/questions/5794422/iphone-save-uiimage-to-desktop-on-simulator] [1] [1]: http: // stackoverflow. com/questions/5794422/iphone-save-uiimage-to-desktop-on-simulator – smoothdvd

Trả lời

19

Bạn cần phải chỉ đạo các đối tượng NSData vào Path bạn muốn dữ liệu được lưu trong:

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]; 

này sẽ lưu tập tin của bạn trong thư mục App của bạn trên thiết bị (hoặc mô phỏng).

+1

Đây là những gì tôi cuối cùng đã làm. Tôi nghĩ nếu chúng ta không xác định đường dẫn nó sẽ đi đến một số đường dẫn "mặc định". Tôi đã sai. –

+1

Tuyệt vời, vui được giúp. – Shachar

1

U quên cung cấp vị trí hoặc đường dẫn nơi u muốn write.Check writeToFile này: tùy chọn: lỗi:

Ghi các byte trong nhận vào một file nào bằng một con đường nhất định.

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

thông số

đường

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

mặt nạ

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. 
1

Bạn có thể cung cấp cho một tìm kiếm cho "NSDocumentsDirectory", tôi thường tìm đường dẫn cho thư mục tài liệu sử dụng phương pháp này, và sau đó thêm tên file tôi với nó. trong phương thức writeToFile:, đường dẫn được nối thêm này được cung cấp. Sau đó, sử dụng ứng dụng iTunes>, cuộn xuống dưới, chọn ứng dụng của bạn và bạn sẽ có thể xem tệp đã lưu.

PS: bạn phải đặt valur theo định dạng quy định rằng ứng dụng của bạn sử dụng bộ nhớ điện thoại.

5

Nơi mặc định, nơi các tệp được lưu trữ, là thư mục mà tệp thi hành của bạn được lưu trữ.

Xem nơi thực thi của bạn được lưu trữ thông qua kích chuột phải vào Sản phẩm-> YourExecutable:

Screenshot - show in finder executable

Sau đó mở trong công cụ tìm.

Đây pawel.plist nguồn tạo qua

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

pawel.plist resource I done from code

2

Đối với Swift, dựa trên Shachar của câu trả lời:

let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] + "/foo.png" 
data?.writeToFile(path, atomically: true)