使Objective-C方法返回任何内容

Jac*_*lom 0 objective-c nsdata nserror

我使用下面的方法从URL获取数据,但是如果statusCode不等于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
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题

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

mat*_*att 11

通常的惯例是如果出现错误则返回nil.

如果您还想提供错误,通常是通过间接(NSError**)提供额外的参数.

例:

+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error
Run Code Online (Sandbox Code Playgroud)

回报价值

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

Cocoa 非常重视这种模式.