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","re​​questType":"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 “(空)”

NSURLProtocol & swift - ios7 中的错误

iOS开发-Swift进阶之访问控制权限!

Firebase iOS Codelab Swift 中的错误