gpt4 book ai didi

ios - iPhone : Error in copyItemAtPath

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:28 30 4
gpt4 key购买 nike

我正在尝试将文件从一个文件夹复制到文档目录中的另一个文件夹,如下所示:

    - (void)saveFile:(NSString *)folderPath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"destination.png"];

NSError *error = nil;
NSString *srcPath = [folderPath stringByAppendingPathComponent:@"filename.png"];


BOOL success = [[NSFileManager defaultManager] copyItemAtPath:srcPath toPath:documentsDirectory error:&error];
if (error)
{
NSLog(@"%@",error);
}

if (success == YES)
{
NSLog(@"Copied");
}
else
{
NSLog(@"Not Copied");
}
}

当我记录错误时,它会给我以下消息:

Error Domain=NSCocoaErrorDomain Code=516 "The operation couldn’t be completed. (Cocoa error 516.)" UserInfo=0x9d665a0 {NSUserStringVariant=(
Move
), NSFilePath=/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BC37C9D7-7995-47C1-8131-2B07BADCBECB/Documents/foldername/B713320C-2CA0-4FD3-93F6-71D76B102B83/src.png, NSDestinationFilePath=/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/BC37C9D7-7995-47C1-8131-2B07BADCBECB/Documents, NSUnderlyingError=0x9d41c60 "The operation couldn’t be completed. File exists"}

最佳答案

问题 1:出现此问题是因为该目录已包含具有相同文件名的文件。

您应该检查文件夹中是否存在该文件,例如:

- (void)saveFile:(NSString *)folderPath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"destination.png"];

NSError *error = nil;
NSString *srcPath = [folderPath stringByAppendingPathComponent:@"filename.png"];

if ([[NSFileManager defaultManager] fileExistsAtPath:dataPath])
{
//removing file
if (![[NSFileManager defaultManager] removeItemAtPath:dataPath error:&error])
{
NSLog(@"Could not remove old files. Error:%@",error);
}
}
BOOL success = [[NSFileManager defaultManager] copyItemAtPath:srcPath toPath:dataPath error:&error];
if (success == YES)
{
NSLog(@"Copied");
}
else
{
NSLog(@"Not Copied %@", error);
}
}

问题 2:您必须提供文件名而不是目录。

替换:

BOOL success = [[NSFileManager defaultManager] copyItemAtPath:srcPath toPath:documentsDirectory error:&error];

与:

BOOL success = [[NSFileManager defaultManager] copyItemAtPath:srcPath toPath:dataPath error:&error];

关于ios - iPhone : Error in copyItemAtPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184969/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com