Mr_*_*ime 8 nscoding optional subscript ios swift
我收到错误"Type'Ship'在我尝试时没有下标成员:
var coor = ship[index]
Run Code Online (Sandbox Code Playgroud)
我试着这样做
var coor = ship?[index] as? Coordinate
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:"无法在'Ship'类型的非可选值上使用可选链接"
这是我的Ship班级:
import Foundation
class Ship: NSObject, NSCoding {
var shipCoors: [Coordinate]?
var count: Int {
var count = 0
for _ in shipCoors! {
count++
}
return count
}
init(shipCoors: [Coordinate]) {
self.shipCoors = shipCoors
}
required init(coder decoder: NSCoder) {
self.shipCoors = decoder.decodeObjectForKey("shipCoors") as? [Coordinate]
}
func encodeWithCoder(coder: NSCoder) {
coder.encodeObject(shipCoors, forKey: "shipCoors")
}
}
Run Code Online (Sandbox Code Playgroud)
该Coordinate班也是类型的NSObject, NSCoding,等等的对象似乎是在阵列中,当我加载它们(从NSUserDefaults)?我怎么把它们拿出来?!
JAL*_*JAL 10
向Ship对象添加下标以返回可选的Coordinate:
subscript(index: Int) -> Coordinate? {
guard let coordinate = shipCoors?[index] else {
return nil
}
return coordinate
}
Run Code Online (Sandbox Code Playgroud)
shipCoors声明为[Coordinate]?(一个可选的数组),因此存在一个Ship没有数组的风险shipCoors.在这种情况下,我返回nil,但你可以返回你想要的任何东西.
在Swift 3中有类似的问题
Type '() -> [myObject]' has no subscript members
Run Code Online (Sandbox Code Playgroud)
在我的例子中,这是一个简单的例子,没有在函数调用"()"中添加括号.男生错误.
即以下代码是罪魁祸首
dataModel.myFunction
Run Code Online (Sandbox Code Playgroud)
解决了 dataModel.myFunction()
| 归档时间: |
|
| 查看次数: |
31806 次 |
| 最近记录: |