在 Swift 中删除 Unwrapped 并使其成为可选? [复制]
Posted
技术标签:
【中文标题】在 Swift 中删除 Unwrapped 并使其成为可选? [复制]【英文标题】:Remove Unwrapped and make Optional in Swift? [duplicate] 【发布时间】:2020-01-31 05:44:00 【问题描述】:可选类型“[AnyObject]?”的值必须解包为 输入“[AnyObject]”
我将一个数组的值传递给另一个数组
第一个数组声明
var arrayShow = [AnyObject]()
第二个数组声明
var arrayData = [AnyObject]()
我在这里崩溃了: 我必须将下面的行作为选项并删除! @vadian vc.arrayData = (self.arrayShow[tag] as?[AnyObject])!
我的代码:
let status = self.nullToNil(value: result["status"]) as? String ?? ""
let doc_url = self.nullToNil(value: result["doc_url"]) as? String ?? ""
self.arrayShow.removeAll()
if(status == "200")
let data = self.nullToNil(value: result["data"]) as? [[String:AnyObject]]
self.arrayShow.append(data as AnyObject)
print("Array : \(self.arrayShow)")
DispatchQueue.main.async
if(data?.count == 0)
self.alert(message: "No Data Found.")
else
if let vc = self.storyboard?.instantiateViewController(withIdentifier: "ViewPrescriptionReport") as? ViewPrescriptionReport
vc.modalPresentationStyle = .overCurrentContext
vc.strTitle = "View Prescription"
vc.strURL = doc_url
vc.arrayData = (self.arrayShow[tag] as? [AnyObject])!
self.present(vc, animated:true, completion: nil)
else
print("no data found")
【问题讨论】:
其实这个错误的意思是Make Unwrapped and Remove Optional in Swift ???? 你能显示实际产生错误的代码吗?这些数组都不是可选的。为什么要使用AnyObject
的数组?你不知道元素的实际类型吗?
消除 !是使用条件if let element = arrayShow[tag] as? [AnyObject] arrayData = element
,但我怀疑这不会进入块,因为似乎arrayShow[tag]
中的元素不是AnyObject 的数组,即你是说 arrayShow 是一个数组数组
您在检索 JSON 吗?有更好的处理方法
你能出示你的JSON
吗?
【参考方案1】:
因为arrayShow
不是 [[]] 即数组数组,所以唯一的删除方法!是从 arrayShow 中获取 [tag] 处的元素并附加到新创建的数组中。像这样。
...
let element = self.arrayShow[tag]
vc.arrayData = [AnyObject]()
vc.arrayData.append(element)
...
【讨论】:
以上是关于在 Swift 中删除 Unwrapped 并使其成为可选? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 AppDelegate Swift 代码放入 Objective-C AppDelegate 文件并使其工作?
如何创建 ElasticSearch 类型并使其在索引中可搜索