2016-07-15 96 views
-1

如何在单个数组中存储多类型对象? 我做如下: -swift - 在单个数组中存储多类型对象数组

var vehicles = [string]() 
    let mustang = Car() // car is a class name 
    mustang.brandName = "Ford" 
    mustang.modelName = "Mustang" // string type 
    mustang.modelYear = 1968 
    mustang.isConvertibible = true 
    mustang.isHatchback = false 
    mustang.hasSunroof = false // bool type 
    mustang.numberOfDoors = 2 // int type 
    mustang.powerSource = "gas engine" 

    // Add it to array 
    vehicles.append(mustang.brandName) 
    vehicles.append(mustang.modelName) 
    vehicles.append(mustang.modelYear) // getting error here (int type not supporting) 
    vehicles.append(mustang.isConvertibible) // getting error here (bool type not supporting) 
    vehicles.append(mustang.brandName) 
    vehicles.append(mustang.brandName) 

我将如何实现这一目标?我是swift-ios中的新成员。

+0

为什么不能将汽车存储到阵列中,而不是每个单独的属性? (ArrayThatholdsCars.append(mustang))。如果你需要存储不同类型的对象,那么你应该声明你的数组类型为AnyObject –

回答

1

而不是创造stringarray,你可以创建汽车的array喜欢这一点,并直接存储车对象

var cars = [Car]() 
let mustang = Car() // car is a class name 
mustang.brandName = "Ford" 
mustang.modelName = "Mustang" // string type 
mustang.modelYear = 1968 
mustang.isConvertibible = true 
mustang.isHatchback = false 
mustang.hasSunroof = false // bool type 
mustang.numberOfDoors = 2 // int type 
mustang.powerSource = "gas engine" 
cars.append(mustang) 

或者,如果你想存储不同类型的object那么你不能创建AnyObjectarray,使它将存储该阵列内的任何类型的instanceobject

var arr = [AnyObject]() 
let car = Car() 
let bike = Bike() 
arr.append(car) 
arr.append(bike) 
+0

感谢您的快速回答。我尝试着。 – ripa

+0

这是一个很好的答案。解决了我的错误。 – ripa

1

我认为你做的事情确实是错误的。

数组是设计的只能容纳一种类型的东西。如果你真的想拥有不同类型的东西。下面是一些可能的方法:

  1. 你可以尝试创建的AnyObject秒的数组:

-

var vehicles = [AnyObject]() 

,如果你要存储的类型不符合这将无法正常工作到AnyObject。如果你有这种类型,你将不得不使用Any

  • 你可以创建一个字符串数组和转换所有要存储为字符串值

  • 您只需创建的Car秒的阵列来存储所有汽车的特性。然后你可以在稍后添加更多的汽车。我认为这是你的意图。

  • 0

    每迅文档:

    AnyObject可以表示任何类型的一个实例。

    任何都可以表示任何类型的实例,包括函数类型。

    所以,你可以做的

    var vehicles = [AnyObject]()

    一个数组,这将需要的任何类型的对象(类实例)。

    然而,文件接着说:

    使用任何AnyObject只有当你明确需要的行为和能力,他们提供的。对代码中期望使用的类型进行具体说明总是更好。

    所以,理想情况下,你是具体的数组可以容纳的类型。

    相关问题