iOS swift 中的错误域 = NSCocoaErrorDomain 代码 = 3840?
Posted
技术标签:
【中文标题】iOS swift 中的错误域 = NSCocoaErrorDomain 代码 = 3840?【英文标题】:Error Domain=NSCocoaErrorDomain Code=3840 in iOS swift? 【发布时间】:2016-02-26 13:30:48 【问题描述】:之前一切正常,但现在出现类似
的错误错误域=NSCocoaErrorDomain 代码=3840“JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。” UserInfo=NSDebugDescription=JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。
我的 JSON 解析代码是这样的
func JSONParseArray(jsonString: String) -> [AnyObject]
if let data = jsonString.dataUsingEncoding(NSUTF8StringEncoding)
if let array = (try? NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0))) as? [AnyObject]
return array
print(strings)
return [AnyObject]()
可能有什么问题?还是我做错了什么?
我的 JSOn 字符串值为
http://test.domain.in/transfer/jsp/wsCall.jsp?dataFormat=JSON&requestData="requestId":"1447417335364","requestType":"LOGIN","channelId":"MOBILE","clientId":"RG","groupId":"Test","loginId" :"test@test.com","password":"cFzc3dvcmRAMA==","noofAttempts":"1","ipAddress":"8ADCD445-A4F6-49EA-A344-35313A0AD","key":"MzQM3OTA4NDgxMjY4bWlsbGVy"
【问题讨论】:
jsonString 的值是多少? @Midhun 我更新了我的问题 您的 jsonstring 无效。这部分http://test.domain.in/transfer/jsp/wsCall.jsp?dataFormat=JSON&requestData=
导致问题。
@Midhun 我的字符串有什么问题?可以请解释一下,以便我可以处理它..因为它之前工作正常
http://test.domain.in/transfer/jsp/wsCall.jsp?dataFormat=JSON&requestData=
不应成为您的 jsonString 的一部分。你必须弄清楚它为什么会来。
【参考方案1】:
request.setValue("text/json", forKey: "Content-Type")
【讨论】:
【参考方案2】:好像你回复的第一个字母是h,第二个是t,第三个是t,第四个是p。那不是有效的 JSON。
顺便说一句。永远不要将字符串传递给应该解析 JSON 的方法。沿线有人向您发送了 NSData。将 NSData 原封不动地传递给 JSON 解析器。这样可以避免浪费内存、浪费时间、浪费电池电量和出现不必要的错误。
顺便说一句。对于一个可能失败的方法,返回除可选项之外的任何内容都是非常糟糕的风格。特别是因为您实际上在发生错误时返回了一个空数组,这无法与 [] 的输入区分开来,后者被正确解析并返回一个空错误。所以你失去了所有的错误检查。
【讨论】:
以上是关于iOS swift 中的错误域 = NSCocoaErrorDomain 代码 = 3840?的主要内容,如果未能解决你的问题,请参考以下文章
快速从电子邮件中获取 plist 附件(NS Cocoa 错误域代码 260)
Swift 服务调用中的错误域 = NSURLErrorDomain 代码 = -1004 而不是 -1009
AVAudioPlayer 不工作。 swift2 中的错误域 = NSOSStatusErrorDomain 代码 = 1954115647 “(空)”