代码之家  ›  专栏  ›  技术社区  ›  Patrick

Cocoa contentsOfDirectoryAtPath:方法因某些用户的错误而失败-Mac OS X

  •  3
  • Patrick  · 技术社区  · 16 年前

    下面是代码片段:

    // Get into the data folder of it
    keychainPath = [keychainPath stringByAppendingPathComponent:@"data/default"];
    
    DLog(@"Keychain data path: %@", keychainPath);
    
    // Define Filemanager
    NSFileManager *fm = [NSFileManager defaultManager];
    
    // Catch any errors
    NSError *dataError = nil;
    
    // get all the files in the directory
    NSArray *dataFiles = [fm contentsOfDirectoryAtPath:keychainPath error:&dataError];
    
    if(!dataFiles)
     NSLog(@"Error: %@",dataError);
    

    现在,这对大多数人来说都很好,但也有少数人报告了问题,其中“dataError”对象给出:

      Error: Error
    Domain=NSCocoaErrorDomain Code=260 UserInfo=0x14d1fa10 "The folder
    “default” doesn’t exist." Underlying Error=(Error
    Domain=NSOSStatusErrorDomain Code=-43 "The operation couldn’t be
    completed. (OSStatus error -43.)" (File not found))
    

    有这个问题的人说文件/文件夹“default”确实存在,所以我不知道为什么它不起作用。

    任何帮助都将不胜感激!

    1 回复  |  直到 16 年前
        1
  •  3
  •   Patrick    16 年前

    回答我自己的问题:

    原来问题是因为有些人的MacOSX安装对tilde(~)感到困惑

    使用方法

    [keychainPath stringByExpandingTildeInPath];
    

    一旦这样做了,问题就解决了。

    我想问题的原因是有多个用户帐户的人,而我没有。