【问题标题】:Thread 1: signal SIGABRT in JSONSerialization线程 1:JSONSerialization 中的信号 SIGABRT
【发布时间】:2018-09-22 03:54:16
【问题描述】:

我正在创建 array 的切片并将其放入 JSONSerialization & 编译器因SIGABRT 而失败。

    let array = [1,2,3,4,5,6]
    let arraySlice = array[1...3]
    print(String(data: try! JSONSerialization.data(withJSONObject: arraySlice, options: .prettyPrinted), encoding: .utf8 )!)

线程 1:信号 SIGABRT

如何序列化数组切片?

【问题讨论】:

  • Array(arraySlice)代替withJSONObject: arraySlice
  • @Anbu.karthik 是的好主意。请参阅我对以下答案的评论。

标签: ios swift nsjsonserialization jsonserializer


【解决方案1】:

JSONSerialization不适用于ArraySlice,需要先转换成Array

print(String(data: try! JSONSerialization.data(withJSONObject: Array(arraySlice), options: .prettyPrinted), encoding: .utf8 )!)

【讨论】:

  • 是的,它可以工作,但是 因为ArraySlice 是 mutablecollection,所以你认为它是安全的吗?
  • 我指的是 Arrayslice of Keypairs 或类似的深度数组。因此产生了疑问。
  • @Ramesh,一般JSONSerialization只能处理NSArrayNSDictionaryNSNumberNSStringNSNull。 (NSArrayNSDictionary 的内容也需要属于这些类型。)其他类型,无法桥接到这些类型将导致运行时错误。 ArraySliceArray 可以安全工作,Swift 桥接功能可以安全地将其转换为 NSArray(当元素也可以像 array 一样桥接时。)
猜你喜欢
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多