[swift]NSJSONSeralization.dataWithJSONObject 崩溃

标签: Xcode json Swift
发布时间: 2017/3/4 23:35:07
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 NSJSONSeralization.dataWithJSONObject 的问题。

这将使我的应用程序崩溃︰

@IBAction func sendMessage(sender: AnyObject) {

    cachedMessage = messageField.text
    messageField.text = ""

    let messageData = NSJSONSerialization.dataWithJSONObject(cachedMessage, options: NSJSONWritingOptions.PrettyPrinted, error: nil)

...

}

我希望你能以某种方式帮助我...

解决方法 1:

它会给你这样的错误︰ JSON 写中的顶级类型无效

如果您正在创建一个 JSON 对象,那么应该从数组或字典。因为你想要的对象中转换为 JSON 必须是一个顶级对象。

顶层的对象是 NSArray 或 NSDictionary。

请尝试以这种方式︰

    var demoArray : NSArray! // (Use it if you want to send data as an Array)
    var demoDic : NSDictionary! // (Use it if you want to send data as an Dictionary (Key - Value Pair))

    var cachedMessage : String! 
    cachedMessage = "Sample" // Here your String From textfield

    demoArray = [cachedMessage] // Array with your string object
    demoDic = ["Your Key":cachedMessage] // Dic with your string object. 

您可以提供您所需的密钥,而不是您的密钥

这是如何,您可以从数组和字典来创建数据。

    let msgDataOfArray = NSJSONSerialization.dataWithJSONObject(demoArray, options: NSJSONWritingOptions.PrettyPrinted, error:nil)
    let msgDataOfDic = NSJSONSerialization.dataWithJSONObject(demoDic, options: NSJSONWritingOptions.PrettyPrinted, error: nil)

如果你想要看看你的数据会看后 JSONSerialization 进程然后你可以看到像下面的方式

    var DataToStringForArray = NSString(data: msgDataOfArray!, encoding: NSUTF8StringEncoding)
    var DataToStringForDic = NSString(data: msgDataOfDic!, encoding: NSUTF8StringEncoding)

    println("Data To String OF Array : \(DataToStringForArray)")
    println("Data To String OF Dic : \(DataToStringForDic)")
官方微信
官方QQ群
31647020