2015-11-08 42 views
0

我有兩個獨立的.swift文件。我想用ManagePerson.swift來管理我的Strings,比如添加和檢索。另一個ViewController.swift創建一個用於訪問數據的ManagePerson類數組。Swift2的數組

在我ManagePerson.swift

func addPerson(name: String, code: String, description: String){ 
    self.name = name 
    self.code = code 
    self.description = description 
} 

在我ViewController.swift。

var personList = [PersonTable]() // Declared at class level 

for jsonObjectString in resultArray! { 
    let name = jsonObjectString["Name"] as! String 
    let code = jsonObjectString["Code"] as! String 
    let description = jsonObjectString["Description"] as! String 
    self.personList[count].addPerson(Name, code: code, description: description) 
    count++ 
} 

但是,我似乎無法執行.addPerson方法。我得到一個錯誤「主題:6:EXC_BAD_INSTRUCTION(代碼= EXC_I386_INVOP,子碼=爲0x0)」

回答

2

首先任何情況下,假設你定義你的「人」類與(一)三個屬性;和(b)的init方法來設置這些屬性:

class Person { 
    let name: String 
    let code: String 
    let description: String 

    init(name: String, code: String, description: String) { 
     self.name = name 
     self.code = code 
     self.description = description 
    } 
} 

然後,實例化一個Person,它只是

let person = Person(name: "Joe Montana", code: "16", description: "Quarterback") 

如果你想這些Person對象的數組,你把它定義爲:

var personList = [Person]() 

因此也就與一個Person添加到該陣列中,它是:

personList.append(Person(name: "Joe Montana", code: "16", description: "Quarterback")) 

所以,如果resultArray是字典的一個數組,你添加項目,像這樣:

for dictionary in resultArray! { 
    let name = dictionary["Name"] as! String 
    let code = dictionary["Code"] as! String 
    let description = dictionary["Description"] as! String 
    personList.append(Person(name: name, code: code, description: description)) 
} 

但是,請注意,我們沒有惹count(因爲你可以添加到數組)。

或者,如果這些數值可能是nil,你定義這些爲選配:

class Person { 
    let name: String? 
    let code: String? 
    let description: String? 

    init(name: String?, code: String?, description: String?) { 
     self.name = name 
     self.code = code 
     self.description = description 
    } 
} 

for dictionary in resultArray! { 
    let name = dictionary["Name"] as? String 
    let code = dictionary["Code"] as? String 
    let description = dictionary["Description"] as? String 
    personList.append(Person(name: name, code: code, description: description)) 
} 
+0

謝謝!!!!!!! –

0

這是因爲self.personList[count]nil它不包含的PersonTable