Objective-C 在自定义方法中将 NSError 指针传递给 NSFileManager

Posted

技术标签:

【中文标题】Objective-C 在自定义方法中将 NSError 指针传递给 NSFileManager【英文标题】:Objective-C passing NSError pointer to NSFileManager within custom method 【发布时间】:2012-06-13 15:15:56 【问题描述】:

我有一个使用 ARC 并接受 NSError 指针的方法,我将它传递给 NSFileManagercontentsOfDirectoryAtPath:error: 方法,如下所示:

+ (NSArray *) getContentsOfCurrentDirectoryWithError: (NSError **)error

    // code here

    _contentsOfCurrentDirectory = [_fileManager contentsOfDirectoryAtPath: _documentDirectory error: error];

    // more code here

我不确定这段代码是否正确,因为我不太习惯使用指针,因为被托管语言破坏了。然而,我最初的反应是这样做:

_contentsOfCurrentDirectory = [_fileManager contentsOfDirectoryAtPath: _documentDirectory error: &error];

Xcode 对我大喊大叫,因为我这样做了。我对这可能如何工作的假设是contentsOfDirectoryAtPath:error: 方法正在请求一个指针,并且由于我在我的getContentsOfCurrentDirectoryWithError:error: 方法中请求一个指针,所以我可以不使用取消引用运算符就传递error

我只是想确保我这样做是正确的,以避免以后麻烦,所以我所拥有的有问题吗?

【问题讨论】:

【参考方案1】:

方法可以是这样的 NSError **errorMessage in .h 文件:

+ (NSArray *) getContentsOfCurrentDirectory
 
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,    NSUserDomainMask, YES);
  NSString *_documentsDirectory = [paths objectAtIndex:0]; 
  NSArray *_contentsOfCurrentDirectory = [[NSFileManager defaultManger]  contentsOfDirectoryAtPath: _documentDirectory error: errorMessage]; 
  return contentsOfCurrentDirectory ;

每当发生错误时errorMessage参考都会有错误信息[错误描述]

【讨论】:

好吧,我原本打算让我的自定义方法能够暴露内部方法可能遇到的任何错误。

以上是关于Objective-C 在自定义方法中将 NSError 指针传递给 NSFileManager的主要内容,如果未能解决你的问题,请参考以下文章

iOS Objective-C 在自定义框架中显示 PNG 图像

如何在自定义视图中将子视图的框架设置为其父框架

无法在自定义适配器中将 EditText 转换为 TextView

是否可以在 Objective-C 中将方法声明为私有?

iOS - WKURLSchemeHandler 未在自定义方案上调用

AttributeError:“Tensor”对象在自定义损失函数中没有属性“numpy”(Tensorflow 2.1.0)