gpt4 book ai didi

ios - 无法实例化函数 无法转换类型为 '__NSArrayI' 的值

转载 作者:行者123 更新时间:2023-11-28 12:38:26 24 4
gpt4 key购买 nike

我在 Swift 3 中实现了以下功能:

    func parseJSON() {
var JsonResult: NSMutableArray = NSMutableArray()

do {
JsonResult = try JSONSerialization.jsonObject(with: self.data as Data, options:JSONSerialization.ReadingOptions.allowFragments) as! NSMutableArray
} catch let error as NSError {
print(error)
}
var jsonElement:NSDictionary=NSDictionary()
let locations: NSMutableArray = NSMutableArray()

for i in 0 ..< JsonResult.count
{
jsonElement = JsonResult[i] as! NSDictionary
let location = Parsexml()

if let title = jsonElement["Title"] as? String,
let body = jsonElement["Body"] as? String,
let userId = jsonElement["UserId"] as? Int,
let Id = jsonElement["Id"] as? Int
{

location.title = title
location.body = body
location.userId = userId
location.id = Id

}

locations.add(location)
}
DispatchQueue.main.async { () -> Void in

self.delegate.itemsDownloaded(items: locations)

}

当我从另一个方法调用此函数时,出现以下错误:

Could not cast value of type '__NSArrayI' (0x105d4fc08) to 'NSMutableArray' (0x105d4fcd0).

它指向这里的元素:

  JsonResult = try JSONSerialization.jsonObject(with: self.data as Data, options:JSONSerialization.ReadingOptions.allowFragments) as! NSMutableArray

它以 SIGBRT 退出的地方..

我在这里错过了什么?

最佳答案

您正在尝试将 NSArray 转换为 NSMutable 数组,这是警告所提示的内容。

获取它提供给您的数组,然后将其转换为可变数组。

let jsonArray = try JSONSerialization.jsonObject(with: self.data as Data, options:JSONSerialization.ReadingOptions.allowFragments) as! NSArray
jsonResult = jsonArray.mutableCopy() as! NSMutableArray

无关,但您可能还希望为 JsonResult 使用小写值以符合正常的 iOS 样式指南。它应该改为 jsonResult。

关于ios - 无法实例化函数 无法转换类型为 '__NSArrayI' 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40186337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com