- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 SwiftyJSON ( https://github.com/SwiftyJSON/SwiftyJSON )。假设我有两种格式之一的 JSON 响应:
{
"id": 1,
"foo": "bar"
}
或者
{
"id": 1,
"foo": "bar",
"user": {"id": 2}
}
我只想在 JSON 中存在“user”元素时更新我的 Swift 对象的“user”属性。现在我正在这样做:
let userJson = json["user"]
if userJson.type != .Null && userJson.type != .Unknown {
user = User.create(userJson)
}
有没有更好的方法来处理这个问题?比如说,使用 Swift 的 if-let
语法?
最佳答案
我想不出比您正在做的更优雅的方法,但另外我所做的是在构造函数中移动我的检查。我为我的实现所做的是每个可以反序列化为数据传输对象的类,我必须为以字典作为参数的构造函数提供一个实现。字典是来自 API 的 json。我显然在我的代理层中确保它确实可以反序列化,不为空,并且可以表示为字典。
因为我知道 API 调用可能会返回某种错误的响应(通常从我的代理层处理)或者正是我调用该调用所需的契约(Contract)(转换为 DTO)我可以对返回的内容做出一些假设.
如果您有可能无法返回某些东西,除非这是一个复杂的项目,否则您可能会像这样在构造函数中进行此类检查:
required init(dict dictionary: NSDictionary)
{
self.id = dictionary["id"] as Int
self.foo = dictionary["foo"] as String
self.user = ( (dictionary["user"] == nil) ? User() : User(dictionary["user"]))
}
所以现在在这里,我说如果它是 nil 则返回一个新的用户对象,但也许你只想保持它为 nil。否则,如果不是,则将“用户字典”(原始 JSON 中的一个子项,在本例中为 {"id":2})传递到用户类构造函数中,它几乎会做同样的事情,但会滋润您的用户对象.
我猜用户类可能是:
required init(dict dictionary: NSDictionary)
{
self.id = (dictionary["id"] as Int)
}
关于json - 在 SwiftyJSON 中处理可选元素的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27518512/
我有:- var myArray:Array = array 我想要:- var myJSON:JSON = myArray as? JSON 但我收到警告:-从“数组”转换为无关类型“JSON”总是
真的很麻烦。我在 App Store 上有几个应用程序,其中一些使用 SwiftyJSON,但后一个很奇怪。我正在尝试将其上传到 App Store,但出现了这个奇怪的错误。 No suitable
从我之前的问题中你可以看出,我在解析 JSON 数据时遇到了很多麻烦。经过几天的头痛之后,我认为最好的方法仍然是使用 alamofire/swiftyjson。我还发现了 alamofire-swif
当我将我的 SwiftyJSON 文件添加到我的项目时,它有大约 45 个错误,其中大约 44 个将 as 更改为 as!。现在我被困在第 238 行的最后一个,然后我就可以走了。错误说: 无法将“A
我一直在使用模拟器来测试我的应用程序。今天我决定在模拟器中使用其他设备对其进行测试,令我惊讶的是它在某些设备上启动时崩溃,而在其他设备上却运行良好 我的应用构建运行于: iPad 空气 可调整大小的
这是问题的续集:dyld: Library not loaded: @rpath/SwiftyJSON.framework/SwiftyJSON 从头开始重建项目后(新项目、新 podfile、新文件
我试图弄清楚 SwiftyJSON 但我遇到了问题 下面显示的代码工作正常 import UIKit class ViewController: UIViewController {
我有对象 {"FIELD NAME":{ "SUBNAME":{ "FIELD_ONE":"DATA", "FIELD_TWO":"
我正在使用 SwiftyJSON,这很棒。但是,我在将 JSON(data:) 结果存储在我的 viewController 中时遇到问题。 SwiftyJSON 的标准使用效果很好。 let jso
我一直在学习 SWIFT 应用程序中的 JSON 解析。到目前为止,我一直在使用一个简单的免费 API,没有遇到任何问题,应用程序按设计运行。但现在我正在调用一个 API,该 API 返回一个数组内的
SwiftyJSON.swift 文件给我一个错误“NSNumber”对协议(protocol)“Comparable”的冗余一致性 extension NSNumber: Swift.Compara
我正在使用 Alamofire 从 API 获取数据。我正在使用 SwiftyJSON 来解析 JSON 响应。目前,我正在迭代产品数据,并希望提取产品详细信息并将其显示在 Collection Vi
我试图从我的测试目标包中读取一个文件,将该文件转换为 NSData,并将所述数据传递给我的类,然后类使用它来实例化 SwiftyJSON 实例。似乎我的数据生成正确,但是我的 SwiftyJSON 实
我尝试使用 SwiftyJSON 解析以下 JSON 结构,但我无法弄清楚如何循环遍历“sections”节点。我当前的代码返回每个部分的第一个部分节点,但我无法访问“Section 1b/Secti
我有一个由 .rawString() 转换的 JSON 对象的 NSArray,保存在 NSUserDefaults 上。 这是 lanesToReturn NSArray 的打印结果: ( "{\n
我有一个字典数组: var dictArray = [[String:String]]() 我附加了一些字典并将 dictArray 转换为 JSON: let json = JSON(dictArr
如何在不循环的情况下从一个数组到下一个数组? JSON:/image/34BtT.png 我尝试这样做 guard let items = self.json["data"]["reels_media
我有一个包含一些变量的类,我想通过使用 SwiftyJSON 解析 JSON 输出来创建此类的对象数组(我是 SwiftyJSON 的新手,因此在创建时遇到了一些问题一)并使用表格显示它们 谁能帮我创
我尝试用这种结构创建 JSON: var json: JSON = [ "params": [ "token": Utilities.token,
键“children”中包含的数组包含 100 项。 有没有办法告诉 SwiftyJSON 去抓取一个随机索引?我尝试创建一个随机数 var random = arc4random_uniform(2
我是一名优秀的程序员,十分优秀!