Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c writeToFile给出NSUnderlyingError=0x6a3d450";操作无法’;不可能完成。是一个目录";_Objective C_Ios_Cocoa_Grand Central Dispatch_Writetofile - Fatal编程技术网

Objective c writeToFile给出NSUnderlyingError=0x6a3d450";操作无法’;不可能完成。是一个目录";

Objective c writeToFile给出NSUnderlyingError=0x6a3d450";操作无法’;不可能完成。是一个目录";,objective-c,ios,cocoa,grand-central-dispatch,writetofile,Objective C,Ios,Cocoa,Grand Central Dispatch,Writetofile,我正在尝试将文件写入GCD中的路径,但它不起作用。不断获取错误“NSUnderlyingError=0x6a3d450”操作无法完成。是一个目录“ 我遇到的问题是,[data writeToFile:path Atomicaly:YES]从未执行过。但是,数据路径确实是创建的,当我“po”数据时“程序有点挂起,所以我猜在调用writeToFile时,数据没有完全获取。然而,我不能准确地指出问题所在,也不知道如何解决它。任何建议都将不胜感激。谢谢 您的代码正在尝试下一步创建文件的路径上创建目录。将

我正在尝试将文件写入GCD中的路径,但它不起作用。不断获取错误“NSUnderlyingError=0x6a3d450”操作无法完成。是一个目录“


我遇到的问题是,[data writeToFile:path Atomicaly:YES]从未执行过。但是,数据路径确实是创建的,当我“po”数据时“程序有点挂起,所以我猜在调用writeToFile时,数据没有完全获取。然而,我不能准确地指出问题所在,也不知道如何解决它。任何建议都将不胜感激。谢谢

您的代码正在尝试下一步创建文件的路径上创建目录。将其取出或创建父目录

您的代码正在尝试下一步创建文件的路径上创建一个目录。将其取出或创建父目录

如何选择“po路径”?上面的错误消息清楚地表明它正在尝试写入目录…您需要附加一个文件名。“路径”是什么样子的?当我搜索路径时,我会得到如下信息:/Users/tanchen/Library/Application Support/iPhone Simulator/5.0/Applications/7E26ED55-04F6-4B79-9C65-6A88FACF93C9/Library/Caches/71231321。。。71231321是照片的唯一id。问题是,错误消息实际上显示目录已创建。我还将71231321更改为其他自定义字符串,如mytext.txt,但仍然没有任何运气)=我还将代码块移到GCD之外,以消除由它引起的任何复杂情况,但仍然不起作用/@borrrden抱歉,在之前关于“po路径”的评论中忘记了@you?上面的错误消息清楚地表明它正在尝试写入目录…您需要附加一个文件名。“路径”是什么样子的?当我搜索路径时,我会得到如下信息:/Users/tanchen/Library/Application Support/iPhone Simulator/5.0/Applications/7E26ED55-04F6-4B79-9C65-6A88FACF93C9/Library/Caches/71231321。。。71231321是照片的唯一id。问题是,错误消息实际上显示目录已创建。我还将71231321更改为其他自定义字符串,如mytext.txt,但仍然没有任何运气)=我还将代码块移到GCD之外,以消除由它引起的任何复杂情况,但仍然不起作用/@borrrden抱歉,在前面的注释中忘记了@you我相应地更改了代码,因此我在path下创建了目录(library/cache/myPhotos)并创建另一个NSString路径名storePhotoPath(library/cache/myPhoto/photoID),但是我没有在storePhotoPath上创建directoryatpath。但问题是:::if([manager iswriteablefileatpath:storedPhotoPath])返回否,因此我假设除非为路径创建目录,否则无法写入路径?期待您的回复thx!您几乎不应该尝试检查操作是否可行。只需尝试该操作并查看发生的情况。嘿,迈克,我相应地更改了代码,所以我在路径下创建了目录(library/cache/myPhotos)并创建另一个NSString路径名storePhotoPath(library/cache/myPhoto/photoID),但是我没有在storePhotoPath上创建directoryatpath。但问题是:::if([manager iswriteablefileatpath:storedPhotoPath])返回否,因此我假设除非为路径创建目录,否则无法写入路径?期待您的回复thx!您几乎不应该尝试检查操作是否可行。只需尝试该操作,看看会发生什么
dispatch_queue_t downloadQueue = dispatch_queue_create("flickr downloader", NO); 

dispatch_async(downloadQueue, ^{

    NSString* name = [photoDictionary valueForKey:@"title"];
    path = [path stringByAppendingPathComponent:id];

    if(![manager fileExistsAtPath:path]){
        if([manager createDirectoryAtPath: path withIntermediateDirectories:NO attributes:nil error:nil]){ //create intermediate directories
            data = [NSData dataWithContentsOfURL:[FlickrFetcher urlForPhoto:photoDictionary format:FlickrPhotoFormatOriginal]];  
            NSError *error = nil;
            BOOL success = [data writeToFile:path options:NSDataWritingAtomic error:&error];
            if (!success) {
                NSLog(@"Failed to write to file with error: %@", [error description]);
            }

            if([data writeToFile: path atomically:YES]){
                NSLog(@"data written to file");
            }   
        }
    }
    else{
        if([manager fileExistsAtPath:path]){
            data = [manager contentsAtPath:path];
        }
    }


    dispatch_async(dispatch_get_main_queue() , ^{
        sender.navigationItem.rightBarButtonItem = item;
        sender.photoData = data;
        sender.photoName = name; 
        //call the segue
        [sender performSegueWithIdentifier:segueTitle sender:sender];
    });       

});

dispatch_release(downloadQueue);