0

statusCode我在下面使用此方法从 URL 获取数据,但如果不等于 200 ,我想让它返回错误。

+ (NSData *)getData:(NSString *) url {
    NSURL *urlNS = [[NSURL alloc] initWithString:url];
    NSURLRequest * urlRequest = [NSURLRequest requestWithURL:urlNS];
    NSError * error = nil;
    NSHTTPURLResponse* urlResponse = nil;
    NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&urlResponse error:&error];
    int statusCode = [urlResponse statusCode];
    if(statusCode == 200) {
        return data;
    } else {
        //return the error object which is not NSData or which is converted to NSData
    }
}

我的问题

我可以以某种方式在非 NSData 对象中返回我的错误(它将是上面定义的错误变量),还是可以将我的错误转换为 NSData?

4

1 回答 1

11

通常的约定是如果出现错误则返回 nil。

如果你还想提供一个错误,通常的做法是通过间接(NSError**)提供一个额外的参数。

例子:

+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error

返回值

通过使用编码 enc 从路径命名的文件中读取数据创建的字符串。如果文件无法打开或存在编码错误,则返回 nil。

Cocoa 大量使用了这种模式

于 2013-04-04T19:26:25.883 回答