gpt4 book ai didi

ios - Swift 2 无法删除可选绑定(bind)

转载 作者:可可西里 更新时间:2023-11-01 01:02:59 25 4
gpt4 key购买 nike

我是 Swift 的新手,对可选(!,?)没有更多的想法。我尝试从 plist 获取数据,创建模型并显示到 UITableView。表数据显示完美,但它显示了 Optional() 绑定(bind)。我试过改变!至 ?但无法打开。能否请您指导我解决这个问题。

这是我的代码和输出 -

var fileName : String?
var dataArray : Array<SHQuesAns>?

pList获取数据 -

func loadTableView(){
dataArray = SHDataAccess.init(fname: fileName).arrayFromPlist()
self.questionTableView.dataSource = self
self.questionTableView.delegate=self
self.questionTableView.reloadData()
}

SHDataAccess 类 -

import UIKit

var fileName : String!
class SHDataAccess: NSObject {

init(fname:String?) {
super.init()
fileName = fname
}

func arrayFromPlist() -> Array <SHQuesAns>?{
let dataPlists = NSMutableArray(contentsOfFile:NSBundle.mainBundle().pathForResource(fileName, ofType: "plist")!)
var dataObj : Array <SHQuesAns>? = Array()
for data in dataPlists! {
dataObj?.append(SHQuesAns.init(_dic: data as! NSDictionary))
}
return dataObj
}

}

UITableView 委托(delegate) -

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataArray == nil ? 0 : dataArray!.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let aCell = self.questionTableView.dequeueReusableCellWithIdentifier("qcell",forIndexPath: indexPath) as! SHQuestionCell
let q : SHQuesAns = dataArray![indexPath.row]
aCell.lblQuestion.text = "\(q.question)"
return aCell
}

这是输出 -

enter image description here

最佳答案

这将删除 Optional() 文本:

if let q = q.question as? String {

aCell.lblQuestion.text = "\(q.question!)"

} else {

aCell.lblQuestion.text = ""

}

关键是解包问题对象中包含的字符串,这样当它赋值给标签的文本时,Optional()部分就不会被包含在内。

如果未定义问题字符串,我添加了对 nil 情况的支持。

关于ios - Swift 2 无法删除可选绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33749681/

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