2016-08-19 138 views
0

我需要保存在其上的应用程序创建的目录中的一些图片,这里是我所保存的代码创建目录,并设置完全权限目的C不能写入文件目录的权限问题

NSFileManager* manager = [NSFileManager defaultManager]; 
SnapDir = [AssetPath stringByAppendingPathComponent:@"ScreenCaptures"]; 
if (![manager fileExistsAtPath:AssetWatchSnapDir isDirectory:&isDirectory] || !isDirectory) 
{ 
    NSError *error = nil; 

    [manager createDirectoryAtPath:SnapDir 
       withIntermediateDirectories:NO 
       attributes:nil 
       error:&error]; 
    if (error) 
     NSLog(@"Error creating directory snap path: %@", [error localizedDescription]); 
    else { 
     NSError *error1; 
     [manager setAttributes:@{ NSFilePosixPermissions : @0777 } 
        ofItemAtPath:SnapDir error:&error1]; 
    } 
} 

[[NSUserDefaults standardUserDefaults] setObject:SnapDir forKey:@"AssetSnap"]; 

现在图像png格式一样,

SnapDir = [[NSUserDefaults standardUserDefaults] objectForKey:@"AssetSnap"]; 
NSString* filepath = [SnapDir stringByAppendingPathComponent:filename]; 
NSError *error; 
bool success = [pngRep writeToFile:filepath options:0 error:&error]; 
if (!success) { 
    NSLog(@"writeToFile failed with error %@", error); 
} 

能正常工作时,如果将图像保存发生在目录中创建的应用程序运行的同一个实例。这是我在应用程序中打开应用程序,创建目录,然后保存。

凡当关闭应用程序并再次打开它,并尝试保存图像(使用存储在NSUserDefaults目的地路径),它提供了关于权限问题下面的错误。

Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “2016_08_19_06_32_00.png” in the folder “ScreenCaptures”." UserInfo={NSFilePath=/Users/development/Documents/d/ScreenCaptures/ 

回答

1

尝试:

[manager createDirectoryAtPath:SnapDir.path 
        withIntermediateDirectories:NO 
            attributes:nil 
             error:&error]; 

[manager createDirectoryAtPath:SnapDir.relativePath 
        withIntermediateDirectories:NO 
            attributes:nil 
             error:&error]; 

我没有测试此代码

+0

其实SnapDir是'NSString'类型,我找不到它的'path'或'relativePath'。 – Haris

+0

你可以粘贴SnapDir的价值? –

+0

是的,它在错误消息'/用户/开发/文档/ d/ScreenCaptures /' – Haris