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谢谢您的输入!谢谢你的意见!谢谢你的意见!谢谢你的意见!