假设您有这样的函数:
func getSomething(error: NSErrorPointer) -> Something
Run Code Online (Sandbox Code Playgroud)
你通常这样使用它:
var error : NSError? = nil
let a = getSomething(&error)
Run Code Online (Sandbox Code Playgroud)
在这里检查错误的惯用方法是什么?更具体的问题:
error == nil我们可以假设a永远不会为零,反之亦然?error为了它的无效)或a(确认它不是零)?a != nil && error != nil在某些情况下可以是真的吗?谢谢!
Xcode 8.1 部署目标 iOS 9.0
我按照预期从 Foursquare 场地搜索端点获得了一系列紧凑的场地对象...
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
Run Code Online (Sandbox Code Playgroud)
当我使用...检查数据对象时
if ([NSJSONSerialization isValidJSONObject:data])
Run Code Online (Sandbox Code Playgroud)
我得到一个假的。
有人能告诉我这里出了什么问题吗?
编辑:这是完整的 if 块(在 if 块中向数据添加类型转换之后)...
id foundationObject;
NSLog(@"data:- %@",data);
if ([NSJSONSerialization isValidJSONObject:(id)data])
{
foundationObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"venues foundation object:- %@",foundationObject);
}
Run Code Online (Sandbox Code Playgroud)
之前的代码没有 if 块。只是...
id foundationObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
Run Code Online (Sandbox Code Playgroud)
当我意识到(在上述语句之后使用断点) foundationObject为零时,即使data不是,也进行了更改。
注意:当我在三月份发布适用于 iOS 9.x 的应用程序时,此功能运行得很好。被调用的场地端点的版本会产生影响吗?