2011-07-05 56 views
14

tôi đang sử dụng mã dưới đây để tiết kiệm một hình ảnh trong tên NSDocumentDirectorychiều dài tối đa của tên tập tin

-(BOOL)saveImage:(UIImage *)image name:(NSString *)name{ 

    NSString *dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *path = [NSString pathWithComponents:[NSArray arrayWithObjects:dir, name, nil]]; 

    BOOL ok = [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil]; 

    if (!ok) { 
     NSLog(@"Error creating file %@", path); 
    } 
    else { 
     NSFileHandle* myFileHandle = [NSFileHandle fileHandleForWritingAtPath:path]; 
     [myFileHandle writeData:UIImagePNGRepresentation(image)]; 
     [myFileHandle closeFile]; 
    } 
    return ok; 
} 

thường là url của nơi hình ảnh được tải xuống.

có hạn chế về độ dài của tên tệp không? Bạn có biết đôi khi các url có thể siêu dài ...

cảm ơn bạn

Trả lời

29

Nhìn vào hằng số PATH_MAX trong syslimits.h: 91

... 
#define PATH_MAX   1024 /* max bytes in pathname */ 
... 

Bạn có thể kiểm tra điều này cho mình bằng cách thực hiện:

NSLog(@"%i", PATH_MAX); 

chỉ để đảm bảo.

+15

Cũng cần lưu ý độ dài của thành phần tên tệp của đường dẫn - trong cùng tiêu đề '#define NAME_MAX 255'. – petert

+0

Điều này nên được bao gồm trong câu trả lời – Minimi

+1

Trong thực tế, có thể khôn ngoan để ở lại phần nào dưới PATH_MAX cho đường dẫn đến tài nguyên trong ứng dụng theo [bài đăng này] (https://deciphertools.com/blog/2014_10_01_beware_of_long_pathnames/). Nó cho thấy 932 ký tự làm việc tối đa, như việc sử dụng các thư mục trung gian trong quá trình sao lưu iTunes/iCloud có thể khiến tổng chiều dài đường dẫn vượt quá PATH_MAX, dẫn đến việc không sao lưu/khôi phục ứng dụng của bạn. – user2067021

Các vấn đề liên quan