Ios 无法访问数组内部的对象(Swift)
我已经创建了这样一个类:Ios 无法访问数组内部的对象(Swift),ios,arrays,swift,object,Ios,Arrays,Swift,Object,我已经创建了这样一个类: class Task { var name:String var description:String var date:NSDate var taskCompleted:Bool init(name:String, description:String,date:NSDate, taskCompleted:Bool){ self.name = name
class Task {
var name:String
var description:String
var date:NSDate
var taskCompleted:Bool
init(name:String, description:String,date:NSDate, taskCompleted:Bool){
self.name = name
self.description = description
self.date = date
self.taskCompleted = taskCompleted
}
}
然后创建一个新对象,如下所示:
let newTask:AnyObject = Task(name: taskName.text!, description: descriptionInput.text, date: datePicker.date, taskCompleted: false)
稍后,我将对象添加到数组中:
var tasks = [AnyObject]()
tasks.append(newTask)
但是,当我再次尝试访问该对象时,我会遇到一个错误:
print(tasks[0].name)
错误:在当前代码
任务[0]
的类型为AnyObject
且没有“name”属性时,在展开可选值时意外发现nil。尝试更改:
print(tasks[0].name)
到
为了在当前代码中将
任务[0]
从任何对象
更改为任务
,任务[0]的类型为任何对象
,没有“name”属性。尝试更改:
print(tasks[0].name)
到
要将
任务[0]
从AnyObject
更改为Task
,您的数组类型为[AnyObject]
。如果要避免使用as关键字,应将其设置为[Task]
类型,因为任何对象
不一定具有名称
属性。这就是为什么它在展开可选值时会喊出find nil
试试这个:
let newTask:Task = Task(name: taskName.text!, description: descriptionInput.text, date: datePicker.date, taskCompleted: false)
var tasks = [Task]()
tasks.append(newTask)
print(tasks[0].name)
正如Lindsey所说,如果你想在其中包含不同类型的对象,你可以使用
作为关键字,但我认为这不是你想要的。你的数组是[AnyObject]
类型。如果要避免使用as关键字,应将其设置为[Task]
类型,因为任何对象
不一定具有名称
属性。这就是为什么它在展开可选值时会喊出find nil
试试这个:
let newTask:Task = Task(name: taskName.text!, description: descriptionInput.text, date: datePicker.date, taskCompleted: false)
var tasks = [Task]()
tasks.append(newTask)
print(tasks[0].name)
正如Lindsey所说,如果你想在其中包含不同类型的对象,你可以使用作为
关键字,但我认为这不是你想要的。目前,当你从数组中访问任务时,你会得到一个任何对象
,它对你的名称
属性一无所知
你可以做两件事中的一件,这取决于你想要完成的事情
您可以将数组的类型设置为[Task]
而不是任何对象
从数组中检索时,将AnyObject
强制转换为Task
<代码>(任务[0]作为!任务)。名称
当前,当您从数组中访问任务时,会返回一个
AnyObject
,它对您的名称
属性一无所知
你可以做两件事中的一件,这取决于你想要完成的事情
[Task]
而不是任何对象
AnyObject
强制转换为Task
<代码>(任务[0]作为!任务)。名称为什么是任何物体?只需使用TaskWhy AnyObject?只需使用Task谢谢您的输入!谢谢你的意见!谢谢你的意见!谢谢你的意见!