首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift2阵列

Swift2阵列
EN

Stack Overflow用户
提问于 2015-11-08 04:48:18
回答 2查看 70关注 0票数 0

我有两个独立的.swift文件。我希望使用ManagePerson.swift来管理我的Strings,例如添加和检索。另一个ViewController.swift创建一个用于访问数据的ManagePerson类数组。

在我的ManagePerson.swift里

代码语言:javascript
复制
func addPerson(name: String, code: String, description: String){
    self.name = name
    self.code = code
    self.description = description
}

在我的ViewController.swift里。

代码语言:javascript
复制
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 (code=EXC_I386_INVOP,subcode=0x0)”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-08 05:06:10

首先,假设您使用(a)三个属性定义了"person“类;(b)设置这些属性的init方法:

代码语言:javascript
复制
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,它只是

代码语言:javascript
复制
let person = Person(name: "Joe Montana", code: "16", description: "Quarterback")

如果您想要这些Person对象的数组,可以将其定义为:

代码语言:javascript
复制
var personList = [Person]()

因此,要向这个数组添加一个Person,它是:

代码语言:javascript
复制
personList.append(Person(name: "Joe Montana", code: "16", description: "Quarterback"))

因此,如果resultArray是一个字典数组,您可以添加如下所示的项:

代码语言:javascript
复制
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,您可以将这些值定义为选项:

代码语言:javascript
复制
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
    }
}

代码语言:javascript
复制
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))
}
票数 2
EN

Stack Overflow用户

发布于 2015-11-08 04:59:40

因为self.personList[count]nil,所以它不包含任何PersonTable实例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33590846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档