2017-01-16 53 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) 
}