Swift Json 解析错误
昨天在开发公司的ios程序时,遇见一个json解析的问题,并且是一个非常奇怪的问题。
因为原来的代码比较复杂,所以对代码进行了一些简化,具体代码如下:
服务器返回格式(PHP):
array(
array('title' => '新浪','address' => 'http://www.sina.com.cn'),
array('title' => '网易','address' => 'http://www.163.com')
);
解析部分的代码如下:
var jsonData : AnyObject! = NSJSONSerialization.JSONObjectWithData(data,
options:NSJSONReadingOptions.MutableLeaves,error:nil); var links = [Link]();
if let linksData = jsonData as? NSArray {
for linkData : AnyObject! in linksData {
if let linkDict = linkData as? NSDictionary {
let link = Link();
link.title = linkDict["title"] as String;
link.address = linkDict["address"] as String links.append(link);
}
}
}
本来这是非常简单的一个解析,并且执行到这里的时候也不会出现任何问题,但关键是执行完成后继续应用程序会报一个BAD_ACCESS的错误访问。
后面采用了多种方法,后面尝试了多种方法,偶然间在写另外一种方法时没有出错,检查两者发现差异在这段代码:
for linkData : AnyObject! in linksData
不出错代码:
for linkData in linksData
具体原因,因为我对swift也不是很熟悉,所以也不清楚。
但后面将所有的 :AnyObject!去除,发现程序没有出现BAD_ACCESS错误了。
记录一下,希望对于遇见这个问题的人所有帮助。
Swift Json 解析错误的更多相关文章
- Swift Json解析与model互转
Json的解码与编码操作,这里使用swift自带的类JSONDecoder 和 JSONEncoder 1.基础处理 如果你的 JSON 数据结构和你使用的 Model 对象结构一致的话,那么解析过程 ...
- json 解析错误的问题
“/”应用程序中的服务器错误. 未能加载文件或程序集“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe ...
- 捕获JSON 解析错误
$json = <<<JSON { "origin":"Delhi", "destination":"Londo ...
- Swift Json解析基础
func JSONToData(obj:Any) -> Data { //先判断是否可以转换 if !JSONSerialization.isValidJSONObject(obj) { ret ...
- 由于BOM头导致的Json解析出错
上周五改完一些BUG后,测试通过就安心在家过了个周末.结果周一回来一看,整个安卓APP所有的接口都挂掉了1.查找bug 首先想到的是客户端代码有问题,然后想起来上周五还能运行得好好的手机也是同样的错误 ...
- iOS开发之Swift 4 JSON 解析指南
Apple 终于在 Swift 4 的 Foundation 的模块中添加了对 JSON 解析的原生支持. 虽然已经有很多第三方类库实现了 JSON 解析,但是能够看到这样一个功能强大.易于使用的官方 ...
- json解析json字符串时候,数组必须对应jsonObjectArray,不能对应JsonObject。否则会解析错误。
json第三方解析json字符串时候,json数组必须对应jsonObjectArray,不能对应JsonObject.->只要是[]开头的都是json数组字符串,就要用jsonArray解析 ...
- 【微信】微信小程序 微信开发工具中新创建的json文件,编译报错VM1781:2 pages/module/module.json 文件解析错误 SyntaxError: Unexpected end of JSON input
如果新创建报错:编译报错VM1781:2 pages/module/module.json 文件解析错误 SyntaxError: Unexpected end of JSON input 解决方法 ...
- 【JSON解析】JSON解析
前三篇博客分别介绍了xml的三种解析方法,分别是SAX,DOM,PULL解析XML,兴趣的朋友可以去看一下这[XML解析(一)]SAX解析XML,[XML解析(二)]DOM解析XML,[XML解析(三 ...
随机推荐
- Handler发送Message
用Handler更新UI package activity.cyq.handlermessage; import android.content.res.Resources; import andro ...
- MarkFan的程序员客栈
历史上的今天:2013-12-27 跨平台移动开发 App-Framework DEMO 演示
- Linux 系统中用户切换(su user与 su - user 的区别)
1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参 ...
- au3 制作自动安装wps 特别是:控件下的edit 要修改路径
#RequireAdmin#Region ;**** 由 AccAu3Wrapper_GUI 创建指令 ****#AccAu3Wrapper_Icon=bitbug_favicon (2).ico#A ...
- Objective-C设计模式——原型Prototype(对象创建)
1.原型 原型设计模式所谓原型设计模式,其实就是对象复制,这个特性在所有语言基本上都是存在的. 我们知道在OC中,对象赋值其实是对对象的引用复制,其实就是相当于C语言中的指针.创建了一个新的变量,但是 ...
- TouchAndGuest触摸事件和手势
//// nextViewController.m#import "nextViewController.h"#import "my.h"@interface ...
- webSphere集群部署主要步骤
1.系统管理-节点,添加本机节点和另外一台机器的节点2.建立集群服务cluster,添加成员节点3.将应用部署到集群服务cluster4.将数据库源分别建立到节点作用域5.后续步骤参照安装手册 注意事 ...
- (转)Linux性能调优之虚拟内存篇
简单地说,虚拟内存就是硬盘中的一块区域,它用来存放内存里使用频率不高的页面文件.好处是为了提高内存的利用率 - 让使用频率高的页面文件活动在内存区域中,提高CPU对数据操作的速度.在Linux中,这个 ...
- javaweb毕业设计
javaweb毕业设计,管理系统设计,Strut2项目,Springmvc项目,javaweb项目学习. 都是可以运行的,(配数据库和论文),都能提供技术咨询,可以修改.欢迎+扣扣396058587咨 ...
- ASCII 码表
下面的 ASCII 码表包含数值在0-127之间的字符的十进制.八进制以及十六进制表示. 十进制 八进制 十六进制 字符 描述 0 0 00 NUL 1 1 01 SOH start of hea ...