Cocoa的contentsOfDirectoryAtPath:方法对某些用户失败并显示错误 - Mac OS X

3
这是代码片段:

这里是代码片段:

// 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”确实存在于它应该在的位置,所以我不知道为什么这不起作用。
任何帮助都将不胜感激!

那么,keychainPath的值是多少?keychainPath是实例变量还是局部变量?这段代码可以针对相同的实例运行两次吗? - Peter Hosey
1个回答

3

谢谢Peter,keychainPath只是一些字符串,例如'~/Library/etc.etc.'

回答我的问题:

事实证明问题是因为有些人的Mac OS X安装程序对波浪线(~)感到困惑

使用以下方法:

[keychainPath stringByExpandingTildeInPath];

完成这个步骤后,问题得到了解决。

我猜测问题的原因是针对拥有多个用户账户的人,而我并没有这样的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接