Ios 无法强制转换类型为'__恩萨拉伊';(0x106d27d88)至';NSString';(0x107be3c40)

Ios 无法强制转换类型为'__恩萨拉伊';(0x106d27d88)至';NSString';(0x107be3c40),ios,arrays,iphone,json,swift,Ios,Arrays,Iphone,Json,Swift,我正在尝试下载并过滤json数据。过滤json数据后,我打印了过滤后的数据,工作正常。但当我尝试将该数据附加到字符串类型的数组时,它会崩溃,错误是:- 无法将类型为“\uu NSArrayI”(0x106d27d88)的值强制转换为“NSString” (0x107be3c40) 将该产品名称转换为字符串数组,如下所示。[字符串] 将productName=jsonObj?.value(forKey:“name”)设为![字符串] 然后点击以下链接 (一) (二) 范例 let productN

我正在尝试下载并过滤json数据。过滤json数据后,我打印了过滤后的数据,工作正常。但当我尝试将该数据附加到字符串类型的数组时,它会崩溃,错误是:-

无法将类型为“\uu NSArrayI”(0x106d27d88)的值强制转换为“NSString” (0x107be3c40)


将该产品名称转换为字符串数组,如下所示。[字符串]

将productName=jsonObj?.value(forKey:“name”)设为![字符串]

然后点击以下链接

(一)

(二)

范例

let productName1 = ["1", "2", "3"]

var arrayForName1 = [String]()

arrayForName1 = ["name"]

let str = productName1.joined(separator: "")
// ["name", "123"]

// or
let str1 = productName1.joined(separator: ", ")
// ["name", "1, 2, 3"]

arrayForName1.append(str)

您的
productName
是一个数组,您正在将其转换为字符串,从而导致出现问题。您有两个选项来修复此基础:

  • 验证您的
    productName
    数组,并找到要附加到
    arrayForName1
    数组的实际字符串的正确索引。所以你的代码看起来像

    arrayForName1.append(productName[0])

  • 如果您的
    productName
    是一个字符串数组,并且希望将所有字符串添加到
    arrayForName1
    ,只需使用以下代码即可

    arrayForName1+=productName


  • json数据中,数组包含任何参数(如:Number=[“1”、“2”、“3”])


    请发布您的代码,而不是屏幕截图。此外,您的
    productName
    实际上是一个数组,它包含所有这些元素,因此无法在@ShamasS的评论中转换为字符串。+1。而且,你似乎使用SWIFT 3,去掉了NSARTAL、NSCORE和其他基础(太Objul-C)的东西,并且更喜欢SWIFT(几乎没有同样的代码,没有NS< <代码>前缀)。当张贴试图概括问题时,它更容易搜索和上下文化。e、 g.0x106d27d88仅适用于发行时的机器。
    var Number1:String? = ""
    var NumberList:[String] = []
    
    if let Number_from = anItem["Number"] as? String {
      self.Number1 = Number_from
      self.NumberList.append(self.Number1!)
    } else {
      self.NumberList.append("Not Available")
    }