Xcode 4.3
如何初始化,传递参数,并使用NSError检查错误条件**
我读过NSError的SO问题,**,所以我写了使用由推荐一个稍微不同的语法简单的测试程序Xcode 4.3(请参阅下面的__autoreleasing
),所以我不能100%确定这是否正确,尽管代码似乎正常工作。无论如何,只是一个简单的文件阅读器,如果找不到文件就会打印一个错误。
问题
想知道,如果NSError初始化参数传递使用&
,并且错误条件检查是正确的。 此外,在readFileAndSplit..
方法中,我注意到if(!*error)
和if(!error)
之间的很大差异,实际上,if(!error)
在没有发生错误情况时不起作用。
文件读取方法W /可能的错误条件
-(NSArray*) readFileAndSplitLinesIntoArray:(NSError *__autoreleasing *) error {
NSString* rawFileContents =
[NSString stringWithContentsOfFile:@"props.txt"
encoding:NSUTF8StringEncoding
error:error
NSArray* fileContentsAsArray = nil;
if(!*error)
fileContentsAsArray =
[rawFileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
return fileContentsAsArray;
来电
SimpleFileReader* reader = ...
NSError* fileError = nil;
NSArray* array = [reader readFileAndSplitLinesIntoArray: &fileError];
if(fileError){
NSLog(@"Error was : %@, with code: %li",
[fileError localizedDescription],(long)[fileError code]);
}
我唯一需要改变的就是测试'rawFileContents'是否为'nil'而不是错误的存在。主要的返回值应该表示Cocoa中的成功或失败,如果我没有记错的话,那么在方法不成功的情况下,错误不能保证不存在。 –
好的,好点,但无论如何检查错误,是'如果(!*错误)'正确?我发现这适用于'readFile ...'方法中的错误和非错误条件。我解引用双指针,如果它不是null,那么出错了,我假设这是检查的正确方法。 – raffian
我会照你的意思去做。 –