2017-01-16 90 views
0

这里是我的代码试图声明自定义对象的数组中迅速

var planetNames = ["mercury", "venus", "earth", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto"] //names of the planets 

    for currentRing in 0..<orbitMarkers.count 
    { 
     var planetNames[currentRing] = planet(size: 1.2) 

    } 

,这里是我的课

class planet 
{ 
    var size: CGFloat 
    init(size: CGFloat) 
    { 
    self.size = size 
    } 
} 

我试图找出我怎么能做出8数组新的 “行星” 对象

+1

旁注:我建议使用上骆驼情况下为类,所以开始以大写字母和大写一个新字的每一个字符,例如:“PlanetViewController”,或在这种情况下'星球' – Simon

回答

4

,你可以做这样的:

class planet 
{ 
    var name: String 
    var size: CGFloat 
    init(name: String, size: CGFloat) 
    { 
     self.size = size 
     self.name = name 
    } 
} 

var planets: [planet] = [] 
var mercury = planet(name: "Mercury", size: 20) 
planets.append(mercury) 

我为您的星球类添加了一个名称变量,然后数组初始化为var planets:[planet]并且我为其添加了一个星球,以了解它是如何完成的。

+2

谢谢你的工作! – Tim2799

+0

您的欢迎,我在发布之前对其进行了测试:D –

0

这是你会怎么做,在斯威夫特3

var planets = [planet]() // Initialize an array of type planet 
var mercury = planet() // Initialize an instance of type planet 
mercury.size =   // set size on mercury 
planets.append(mercury) // Add mercury to the array planets 

这是未经测试,但这些都是具有自定义类型的数组工作的一些基本语句。

编辑:我只是注意到你有一个初始化设置,这意味着你可以使这样一个星球。

var earth = planet(size: earthSizeHere) // Use initializer 
planets.append(earth) 
0

它看起来像你已经有一个轨道标记阵列..你有一个数组的大小?

此外,命名类UpperCamelCase

class Planet { 
    let name: String 
    let size: CGFloat 
} 

let sizes: CGFloat = [1,2,3,....] // planet sizes 
let names = ["mercury", "x", ...] // planet names 

let planets = zip(names, sizes).map{Planet(name: $0, size: $1)} 

还..大小是有点不伦不类。考虑将其更改为半径,体积,直径或实际表示的任何值。

快速解释 - zip将两个大小相等的数组合并成一个元组数组,将元素成对地连接到一个元组中。数组1中的元素1与数组2中的元素1配对,等等。

地图对压缩产生的元组数组中的每个元组执行操作,为每个元组返回一个Planet对象。

2

自定义类阵列示例迅速3.0

class Planet { 
    var name: String! 
    var size: CGFloat! 

    init(name:String,size:CGFloat) { 
     self.name = name 
     self.size = size 
    } 
} 

var planets = [Planet]() 
let planet = Planet(name: "Earth", size: 1.2) 
planets.append(planet) 

for Planet in planets { 
    print(Planet.name) 
}