私は iOS ライブラリの Charts を使用しています ( https://github.com/danielgindi/Charts )
宣言されたデリゲート関数がありchartValueSelected
、返されentry: ChartDataEntry
ます。
だから私は、それでentry
、data
として宣言されますvar data: AnyObject?
print(entry.data)
> Optional(Optional(<MyProject.Stop: 0x6000002c5cc0> (entity: Stop; id: 0xd00000000c980010 <x-coredata://5F54CCEC-11FB-42F1-BDFE-30F7F7E18614/Stop/p806> ; data: { ... })))
print(type(of: entry.data))
> Optional<AnyObject>
それは変ですか?私はそれを非オプションに割り当てましたか?まあ、それはライブラリのバグかもしれませんが、少なくともアクセスできるはずですか?
guard let e = stopEntry as? Stop else {
continue
}
yVal.append(BarChartDataEntry(value: e.duration!.doubleValue, xIndex: i, data: e))
まあ、??
double オプションで問題ありません..しかし、何ですか? なぜ開封できないのですか?
if let hasObject = entry.data {
print("We have object: \(type(of: hasObject))")
> We have object: _SwiftValue
if let stopObject = hasObject as? Stop {
print("We have a stop object!!") // Doesnt come here
}
}
機能しないその他のものは次のとおりです。
if let s = entry.data, let b = s as? Stop {
// Not executed here either
}