【问题标题】:SwiftyJSON returns UNKNOWN but .exists() returns TRUE?SwiftyJSON 返回 UNKNOWN 但 .exists() 返回 TRUE?
【发布时间】:2016-11-04 16:34:05
【问题描述】:

我只是厌倦了这个包裹......这是正确的吗?因此,如果 JSON 类型返回 UNKNOWN,那么稍后我会检查它是否返回 TRUE?

let json = JSON(jsonFromServer)
print(json) // prints "unknown"
print(json["key"].exists()) // returns true?!

未知是什么意思?我已经用很好的案例测试了代码,它确实有效。现在,如果服务器没有返回 JSON,我的代码就会出错。我做错了什么或如何检查 JSON() 是否返回未知?它的记录太差了。如果没有解决方案,您是否推荐另一个包,或者我应该使用默认包?

【问题讨论】:

  • 什么是jsonFromServer,它是Data 还是一个对象?如果我没记错您需要JSON(data: jsonFromServer) 的数据,否则初始化程序会静默失败。我已经停止使用 SwiftyJSON,它在上一个版本中变得太不稳定了。但是exists 绝对是works... 还是我现在应该说“工作”? ://
  • 我永远不会直接将 serverJSON 转换为 SwiftyJSON JSON,但也许只是对我的后端开发缺乏信心。

标签: json swift swifty-json


【解决方案1】:

从 SwiftyJson 的代码中,我可以说它是 swifty-json 不支持的任何类型:

public enum Type :Int{
    case Number
    case String
    case Bool
    case Array
    case Dictionary
    case Null
    case Unknown
}

要检查错误,您将在json 中设置error

default:
    _type = .Unknown
    _error = NSError(domain: ErrorDomain, code: ErrorUnsupportedType, userInfo: [NSLocalizedDescriptionKey: "It is a unsupported type"])
}

就我个人而言,我发现它是自记录的,仍然参考this 链接以获取详细的文档/示例用法。

【讨论】:

  • 对我来说,是 NSUUID 导致 SwiftyJSON 失败,我花了很多小时才弄清楚这一点。我必须将 NSUUID 转换为 String 才能修复此错误。
猜你喜欢
  • 2013-02-23
  • 2023-04-07
  • 2016-02-22
  • 2012-05-15
  • 2012-06-29
  • 2013-02-26
  • 1970-01-01
  • 2023-03-18
  • 2014-10-21
相关资源
最近更新 更多