我试图理解返回值的含义 [NSData writeToFile:选项:错误:]. 。该方法返回一个 BOOL,根据 Apple 的文档,该值是“如果操作成功则为 YES,否则为 NO”。

很公平,但如果它是“否”,我会假设错误参数将被设置为某个可检索的 NSError* 值。但从我遇到的结果来看,情况并非如此。因此我有点困惑,不知道如何确定导致失败的原因。

也就是说,我有这个代码(或多或少):

NSError* error = nil;
BOOL success = [data writeToFile: filePath error: &error];
if ( error )
    NSLog( @"error = %@", [error description] );

success 原来是 NO 在我正在运行的代码中,但是 NSLog 语句永远不会被执行。怎么会?

霍华德

有帮助吗?

解决方案

这有可能是datanil,在这种情况下返回[data writeToFile:error:] nil,但*error未设置。

其他提示

在将writeToFile方法返回TRUE成功和失败返回FALSE - 这就是要真正地检查什么。

所以,尝试:

if(!success)

作为条件,而不是如果(误差)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top