这是我的代码
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个新的&#34;星球&#34;对象
答案 0 :(得分:5)
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行星:[planet]作为一个例子,我已经为你添加了一个星球,看看它是如何完成的。
答案 1 :(得分:1)
看起来你已经有了一系列轨道标记..你有一个大小的数组吗?
另外,使用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等配对。
Map对由压缩产生的元组数组中的每个元组执行一个操作,为每个元组返回一个Planet对象。
答案 2 :(得分:1)
自定义类数组示例swift 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)
}
答案 3 :(得分:0)
您可以在 Swift 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)