相关疑难解决方法(0)

在Objective-C中,异常/返回NO/nil的最佳实践是什么?

我是Objective-C的新手,我看到有关于错误处理的不同约定.有一些例外,但也有一些情况,如果出现问题,函数应该返回nil.

那么,我如何决定何时使用哪个,以及如何处理异常和意外的返回值?什么是最佳做法和危险信号?

exception-handling exception objective-c return-value

22
推荐指数
2
解决办法
7319
查看次数

从文件读取时处理NSError?

如果我这样做,我只是很好奇.

NSString *fileContents;    
NSError *fileError = nil;

fileContents = [[NSString stringWithContentsOfFile:fileOnDisk
                          encoding:NSMacOSRomanStringEncoding
                          error:&fileError] retain];

if(fileError != nil) {
    NSLog(@"Error : %@", [fileError localizedDescription]);
}

// Other Code ...
[fileContents release];
Run Code Online (Sandbox Code Playgroud)

.

编辑(反映bbums评论)

.

NSString *fileOnDisk = @"/Users/Gary/Documents/Xcode/RnD/Maya.MEL";
NSError  *fileError; // Should this be *fileError = nil;
NSString *fileContents;
int       status = 0;

fileContents = [[NSString stringWithContentsOfFile:fileOnDisk
                          encoding:NSMacOSRomanStringEncoding
                          error:&fileError] retain];

if(fileContents == nil) {
    NSLog(@"FileError: %@", [fileError localizedDescription]);
    status = 1;
} else {
    NSLog(@"Success  : %@", fileContents);
}

// Clean …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c

14
推荐指数
1
解决办法
8169
查看次数

为什么我的命令行pgm看不到这个文件?

很奇怪的问题.我一直在测试我的小命令行程序,它读取一个文件并解析它,它与我的测试数据工作正常,但是当我追求真实的东西时,它找不到文件.

原始文件是通过文本编辑放在一起的文本文件,实际文件是以MS-Dos格式从Microsoft Word保存的.当我试图读取MS Word文件时,它找不到它.我没有收到错误但是从文件加载方法中得到了一个nil字符串.然后我将我的测试文件重命名为相同的名称,它获得了原始测试数据.咦?在最坏的情况下,我认为我会看到某种奇怪的数据加载到我的字符串中......不是零.

这是代码片段的程式化部分.请忽略数据文件NSString周围的"捕获和释放"代码......我意识到我不需要这样做,这不是问题的关键.

datafilename设置为'config1.txt'.

(NSString*) OpenEntryFile: (NSString*) pathname withdatafilename: (NSString*) datafilename {    

NSStringEncoding encoding;
NSError* error = nil;
NSString* inputdatafile;
NSString* response;
NSString *homeDir    = NSHomeDirectory();

NSString *fullPath = [homeDir stringByAppendingPathComponent:datafilename];

filepointer = 0;
[Datafile release];
inputdatafile = [NSString stringWithContentsOfFile: fullPath usedEncoding:&encoding error:&error];

Datafile = [inputdatafile copy];

response = [NSMutableString stringWithString: @"OK"];

if (error) {response = [NSMutableString stringWithString: @"ERROR"];};

if ([Datafile length] < 60) {response = [NSMutableString stringWithString: @"SHORT"];};

return response;
}
Run Code Online (Sandbox Code Playgroud)

load file objective-c nsstring

-2
推荐指数
1
解决办法
1180
查看次数