相关疑难解决方法(0)

Swift惯用错误检查

假设您有这样的函数:

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)

在这里检查错误的惯用方法是什么?更具体的问题:

  1. 如果error == nil我们可以假设a永远不会为零,反之亦然?
  2. 我们应该先检查一下:( error为了它的无效)或a(确认它不是零)?
  3. a != nil && error != nil在某些情况下可以是真的吗?

谢谢!

error-handling idioms nserror swift

3
推荐指数
1
解决办法
1687
查看次数

NSJSONSerialization isValidJSONObject 对于从场所搜索端点接收到的数据返回 false

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 的应用程序时,此功能运行得很好。被调用的场地端点的版本会产生影响吗?

foursquare ios

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

标签 统计

error-handling ×1

foursquare ×1

idioms ×1

ios ×1

nserror ×1

swift ×1