【发布时间】:2016-09-01 08:20:07
【问题描述】:
您好,我有变量,但给了所有变量Optional()。我如何在下面解决我的代码。
下面你可以看到koltuklarkoltuklaridler数组的Json附加代码
for name in json as! [AnyObject] {
let SeatName = name["SeatName"]
let SeatDesignId = name["SeatDesignId"]
self.koltuklar.append("\(SeatName)*\(SeatDesignId)*")
if let blogs = json["SeatDetail"] as? [[String: AnyObject]] {
for blog in blogs {
let TicketTypeId = blog["TicketTypeId"]
let TicketTypeName = blog["TicketTypeName"]
let Amount = blog["Amount"]
self.koltuklaridler.append("\(SeatDesignId)*\(TicketTypeId)*\(TicketTypeName)*\(Amount)*")
}
}
在下面您可以看到代码中的 tableview(该代码在 koltuklaridler 内部搜索 id 后打开 koltuklar 索引路径项,当找到时从中获取一些变量)
var koltuklar = [""]
var koltuklaridler = [""]
if let myStrings:String! = koltuklar[indexPath.row]{
print("\(myStrings!)")
let myStringArrf = myStrings.componentsSeparatedByString("*")
print("\(myStringArrf)")
if let koltukisims:String! = String(myStringArrf[0]) {
cell.koltukName.text = koltukisims
}
print(" STR - \(myStringArrf[1] as String!)")
if let index = koltuklaridler.indexOf(myStringArrf[1] as String!) {
let myStringdetaysecilen = koltuklaridler[index]
print("myStringdetaysecilen \(myStringdetaysecilen)")
}
也是我的json文件
[
{
"SeatDesignId": 16484,
"SeatName": "A6",
"SaloonId": 148,
"SeatDetail": [
{
"TicketTypeId": 1,
"TicketTypeName": "Okay",
"Amount": 13
}
]
},
输出
Optional("A17")*Optional(16254)*
["Optional(\"A17\")", "Optional(16254)", ""]
STR - Optional(16254)
所有变量输出可选我尝试了所有方法但没有修复。
【问题讨论】:
-
只需删除不必要的类型注释(以及
as String!演员表)。除非编译告诉你,否则不要注释类型。 -
PS:在
as演员表中,as总是带感叹号/问号,而不是下面的类型。 -
@vadian 我删除了所有字符串! s 但都是可选的!
-
问题是你已经添加了可选字符串。每当您使用字符串插值
"\(...)"时,请确保所有字符串都已解包。从字典中读取的值总是可选。 -
再一次:从字典中检索到的所有字符串(实际上是所有内容)根据定义都是可选的,因为如果键不存在,您会得到
nil。