Swift 2 将 Json 解析为数组的可选

2023-12-26

我正在从网络服务获取国家/地区列表。收到后我用这段代码来处理它:

if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
    // triggering callback function that should be processed in the call
    // doing logic
} else {
    if let json = try NSJSONSerialization.JSONObjectWithData(data!, options:[]) as? AnyObject {
       completion(json)
    } else {
       let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)                          
       print("Error could not parse JSON string: \(jsonStr)")
    }
}

在该列表看起来像这样(它最终在这部分NSJSONSerialization.JSONObjectWithData(data!, options:[]) as? AnyObject) :

 Optional((
            {
            "country_code" = AF;
            "dial_code" = 93;
            id = 1;
            name = Afghanistan;
        },
            {
            "country_code" = DZ;
            "dial_code" = 213;
            id = 3;
            name = Algeria;
        },
            {
            "country_code" = AD;
            "dial_code" = 376;
            id = 4;
            name = Andorra;
        }
))

我现在应该将此 json 对象转换为数组(或 NSDictionary 以某种方式)并循环遍历它。有人可以建议如何吗?


目前您无法循环遍历您的对象,因为它已被转换为AnyObject通过你的代码。使用当前代码,您可以转换 JSON 数据as? NSDictionary or as? AnyObject.

但由于 JSON 总是以字典或数组开头,因此您应该这样做(保留示例):

if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
    // process "json" as a dictionary
} else if let json = try NSJSONSerialization.JSONObjectWithData(data!, options:[]) as? NSArray {
    // process "json" as an array
} else {
    let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)                          
    print("Error could not parse JSON string: \(jsonStr)")
}

理想情况下,您会使用 Swift 字典和数组,而不是 Foundation 的 NSDictionary 和 NSArray,但这取决于您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 2 将 Json 解析为数组的可选 的相关文章

  • 由于语言错误,Itunes Connect 无法提交

    Thats all it shows https i stack imgur com 0aZm8 png 我不确定它没有告诉我出了什么问题 it shows its linked to the language https i stack
  • Swift 3:如何去除UITableView屏幕截图的灰色区域

    我在从桌面视图的屏幕截图中删除灰色区域时遇到了问题 这是我尝试截图时的输出UITableView 实际上我隐藏了一些tableViewCell这是不需要的 可能这就是区域显示灰色的原因 任何帮助表示赞赏 非常感谢 Answer 我通过使用
  • NSDateFormatter 返回错误的日期 + Swift

    Code let dateString 2016 04 02 var formatter NSDateFormatter NSDateFormatter formatter timeZone NSTimeZone abbreviation
  • 暂停视频录制[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试创建一个应用程序 用户可以在其中从相机录制视频 该应用程序的功能之一必须是文件录制中的暂停 例如 用户通过按 开始 按钮开始
  • iOS 11 安全区域布局指南向后兼容性

    启用安全区域布局指南是否与 iOS 11 以下版本兼容 我设法使用新的安全区域布局指南并保持与 iOS 9 和 iOS 10 的向后兼容性 编辑 正如 NickEntin 的评论所指出的 此实现将假定存在状态栏 但在 iPhone X 的横
  • ITMS-90535 无法使用最新的 Google Signin SDK 发布 iOS 应用程序

    我正在使用 xcode 7 GM 种子并通过 cocoapods 安装了最新的 Google Signin SDKpod Google SignIn 当我尝试将我的应用程序发布到苹果应用程序商店时 我收到附加错误 Help 以下是 Goog
  • Transit MKDirectionsRequest 产生 null 错误 Error Domain=MKErrorDomain Code=5 "(null)"

    我正在尝试使用 MapKit Directions Request 来获取两个坐标之间的交通方向 当我切换到其他 非 Transit 类型时 下面的代码可以工作 但是当我切换到 Transit 时 它会抛出一个错误 该错误在 Apple 文
  • 在后台任务中安排通知

    我正在为 iOS 开发一个日历 闹钟应用程序 它与网络服务器同步 当在服务器上添加活动时 会发出推送通知 以便 iOS 客户端可以获取新数据 并根据需要更新和安排下一次警报的时间 本地通知 但这仅在应用程序在客户端打开时才有效 我希望客户端
  • Swift 中带圆角的 NSWindow

    我想要一个圆角的窗户 但我在每个角落都有一个白点 Code let effect NSVisualEffectView frame NSRect x 0 y 0 width 0 height 0 effect blendingMode be
  • UISearchController 保留问题

    我正在尝试使用 UISearchController 但是我遇到了无法解决的保留问题 MainTableview 有两个部分 第1节 基于某些正则表达式过滤数据 第2节 All Data 我将 UISearchController 添加到我
  • 线程 1:信号 SIGABRT - AppDelegate.h

    main m Journey Created by Julian Buscema on 2014 07 13 Copyright c 2014 Julian Buscema All rights reserved import
  • 混合静态和动态 UITableViewController 内容会导致 NSRangeException

    我一直在寻找这个错误 并找到了一些具有类似行为的帖子 但没有解决问题的解决方案 我有一个 UITableViewController 在 SB 中声明为静态 它具有以下部分 第 0 部分 配方 是静态的 有 4 个单元格 第 1 部分 口味
  • 我可以知道 requireGestureRecognizerToFail 到底会做什么吗?

    谁能告诉我下面的代码行到底会做什么 我已经提到过Apples https developer apple com library ios documentation uikit reference UIGestureRecognizer C
  • 使用 UIImageJPEGRepresentation 时,compressionQuality 应该是多少?

    我想对用户库中的照片应用滤镜 然后将其写回磁盘 我在用着UIImageJPEGRepresentation 该函数需要一个UIImage and a compressionQuality值介于 0 0 和 1 0 之间 因为我想保留原始质量
  • 将数字分解为单个数字的数组

    如果我有整数 123 并且我想将数字分解为数组 1 2 3 最好的方法是什么 我已经搞乱了很多 并且我有以下工作 var number 123 var digits Array String number map Int strtoul S
  • 自定义 MKAnnotationView - 如何捕获触摸而不忽略标注?

    我有一个自定义 MKAnnotationView 子类 它完全按照我想要的方式显示视图 在那个视图中 我有一个按钮 我想捕获按钮上的事件来执行操作 这很好用 但是 我不希望标注被忽略或消失 基本上 触摸标注中的按钮将开始播放声音 但我想保留
  • iOS7 中“-webkit-overflow-scrolling: touch” 最初的屏幕外元素被破坏

    既然转基因种子已经发布了 我们现在可以谈谈了 看起来 iOS7 中的 webkit overflow scrolling touch 已损坏 最初不在屏幕上的元素的触摸事件不会触发 或者在某些情况下只是不可靠 这是一个例子
  • 在 iOS 上从 GPS 获取时间

    我正在开发一个跟踪器应用程序 该应用程序需要高精度地了解设备位置 即它使用位置服务并忽略水平精度低于 20 米的位置 CLLocation没有明确声明是否通过 GPS 确定 但是 如果水平精度为 20 米或更好 则可以认为它是来自 GPS
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • ResponseSerializer“无法使用 Swift 3 调用非函数类型“NSHTTPURLResponse”的值?

    我一直在使用以下代码 没有出现任何问题 直到更新到 Xcode 8 beta 6 它类似于这个例子 https github com Alamofire Alamofire generic response object serializa

随机推荐

  • PHP proc_open 不起作用 - 给我“数组中缺少句柄限定符”

    警告 proc open 第 102 行 C updatedots php 中的数组中缺少句柄限定符 我正在尝试打开记事本并在 2 秒后将其关闭 这是我的代码 descriptorspec array 0 gt array pipe gt
  • Rails 3.1 应用程序集成了 webdav 和身份验证?

    我想为 Rails 3 1 应用程序启用 WebDav 其中我使用 Devise 进行身份验证 使用 CanCan 进行授权 到目前为止 我打开了 WebDav 并且工作正常 是否可以使用 Devise 登录 用户与 dav4rack 来启
  • 在行为方面,如何仅运行一个场景?

    我有一个 行为 功能 对其进行了大量测试 我只需要运行一个特定的场景来满足开发需求 我该怎么做 最好在命令行上 如果您想对该功能运行单个测试 请使用 n or name标志似乎想要后面的文本Scenario behave n This is
  • 由于表变异,触发器无法执行

    我想知道这个问题是什么问题 当我执行存储过程时 它不断向我显示此错误 我的目标是在使用存储过程将数据更新到表中之前 我想检查用户输入的触发器中的错误 SQL gt exec PRC PAY TRIP 1031 2031 Cash 200 B
  • Selenium 2 WebDriver NoClassDefFoundErrorS

    我正在与Selenium 2 WebDriver在 Eclipse 中一切正常 但是 当我想在没有 Eclipse 的情况下测试我的 WebDriver 测试用例时 会发生许多丢失的类 首先它开始于 NoClassDefFoundError
  • 使用 Scala 读取 Excel 文件

    我正在编写一个快速测试 使用电子表格中的数据注册用户 想法是转到网站 gt 单击注册 gt 读取Excel行A1和B1的电子邮件和密码 gt 在注册网站上使用此数据 gt 完成注册 gt 注销 gt 使用A2和B2行中的信息注册新用户 gt
  • UICollectionView不显示图片[重复]

    这个问题在这里已经有答案了 我正在显示所有目录中的图片 但是它不显示图片 我将 NSLog 放入代码中 以便我可以找出哪些代码正在运行 并且我只在日志中得到 j 我在日志中没有看到 a 你觉得哪里不对 void viewDidLoad su
  • 更新 Spacy 的内置 NER 模型而不是覆盖

    我正在使用 Spacy 的内置模型en core web lg并想使用我的自定义实体来训练它 在这样做的同时 我面临两个问题 它会用旧数据覆盖新的训练数据 并导致无法识别其他实体 例如 训练之前 它可以识别 PERSON 和 ORG 但是训
  • importxml google 电子表格 - 新 Google 表格中出现“无法解析 xml 内容”错误

    我试图从谷歌电子表格上的链接获取一些详细信息 Link http www justdial com Gurgaon Travel Agents ct 302 http www justdial com Gurgaon Travel Agen
  • Silverlight 3 中的剪贴板支持

    我正在考虑开发一个在 DataGrid 中显示大量信息的 Silverlight 应用程序 我希望以某种方式让用户能够通过剪贴板将其复制到 Excel 中 这在 Silverlight 3 中可能实现吗 不可以 SL3 中不提供此功能 请阅
  • 我需要在 BlackBerry Webworks 应用程序中嵌入 > 4MB 的内容文件(适用于 BlackBerry 6/7)。我有什么选择?

    我正在开发一个内容丰富的 Webworks 应用程序 为了使应用程序有用 它需要维护一个本地内容数据库 SQL 形式大约 4MB 进一步减少数据库的唯一方法是删除整个内容类别 我最初的想法是 我将 SQL 文件嵌入到应用程序中 就像 CSS
  • 如何以编程方式滚动到 WinRT 中文本框的底部?

    我正在为 WinRT 编写一个简单的应用程序 但我无法找到一种在代码中自动滚动到文本框底部的方法 我正在将日志信息写入文本框 并希望它滚动 以便最新的条目在框中可见 但似乎没有任何效果 以下是我尝试过的一些事情 将文本框放置在 Scroll
  • Kafka - 代理:消息大小太大

    I get Message size too large当我尝试发送超过 1 Mb 大小的消息时出现异常 当我尝试生成消息时 该错误出现在我的客户端应用程序中 经过一番谷歌搜索后 我发现应该更改设置以增加最大消息大小 嗯 我在 kafka
  • Popover segue 到静态单元 UITableView 导致编译错误

    我目前有一个带有两个视图控制器的应用程序 第一个是具有嵌入式表视图的视图控制器 该表视图具有动态单元格 第二个是带有静态单元格的表视图控制器 如果我通过选择动态表的单元格之一将 Segue 添加到静态表视图控制器 使用 Push 或 Mod
  • 在 Netbeans 中更快地搜索文件

    是否有现有的插件或调整可以加速 Netbeans 中的 转到文件 搜索 与 Eclipse 相比 Netbeans 搜索速度太慢 特别是如果有多个大型项目 I know I can use CTRL O for Go To Type but
  • fopen什么时候会失败?

    在我的 PHP 代码中 我打开一个文件并向其中附加文本 我使用这段代码 ourFileHandle fopen ourFileName a or die can t open file 当加载 PHP 页面时会发生这种情况 现在如果两个人同
  • 如何从程序中删除日志调试语句

    我在用boost log作为我的 C 程序的记录器 在开发过程中我经常这样使用它 例如 define LOG severity BOOST LOG SEV boost logger get severity define LOG ERR L
  • 学习嵌入式编程的最佳平台? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我可以在生产中使用 IOSurface 框架录制屏幕吗

    如果我使用 IOSurface 框架制作我的应用程序的视频 苹果会拒绝我的应用程序吗 是的 如果您链 接 IOSurface Apple 将拒绝您的应用程序 商店中的一些项目正在使用它 但他们可能会在运行时加载它 iOS 应用 Displa
  • Swift 2 将 Json 解析为数组的可选

    我正在从网络服务获取国家 地区列表 收到后我用这段代码来处理它 if let json try NSJSONSerialization JSONObjectWithData data options as NSDictionary trig