2016-11-11 4 views
2

構造体を配列に追加しようとしています。私はそれが可能であることを知っている。私はサイトの別の投稿でそれを見ました。しかし、変数を作成せずに配列に構造体を追加する方法があるかどうかは疑問です。例えばSwift - 構造体の配列を作成する

:私たちは、 "連絡先" を作成するperson1person2を使用し、このコードでは

struct Person { 
    var name: String 
    var surname: String 
    var phone: Int 
    var isCustomer: Bool 
} 

var contacts: [Person] = [] 

var person1: Person = Person(name: "Jack", surname: "Johnson", phone: 2, isCustomer: false) 
var person2: Person = Person(name: "alex", surname: "a", phone: 3, isCustomer: false) 

contacts.append(person1) 
contacts.append(person2) 

for contact in contacts { 
    print("\(contact.name)") 
} 

。しかし、数百の連絡先を作成しなければならない場合は、これらの変数をすべてセットアップするのは面倒です。私が試した何

はこれです:

struct Person { 
    var name: String 
    var surname: String 
    var phone: Int 
    var isCustomer: Bool 
} 

var contacts: [Person] = [] 

Person(name: "Jack", surname: "Johnson", phone: 2, isCustomer: false) 

contacts.append(Person) // Here I get this error: "Cannot convert value of type '(Person).Type' (aka 'Person.Type') to expected argument type 'Person' 

は、変数を作成せずに、配列に構造体を追加する方法はありますか?

+0

リモートソース(iCloud、Firebase)またはファイル(plist、csv)をデータベース(つまりCoredata、Realm、SQLite)からプルする。 –

+0

データベースまたはディクショナリの配列と繰り返しループを使用します。 – vadian

答えて

3

インスタンスではなくタイプPersonを挿入しようとするとエラーが表示されます。あなたは変数にバインドせずに連絡先に人を追加したい場合は、単に次の操作を行います。

contacts.append(Person(name: "Jack", surname: "Johnson", phone: 2, isCustomer: false)) 
+0

は、Personインスタンスを変数に格納し、変数を追加します。 –

0

まず、私は誰かがあなたを伝えるようあなたが大量のデータを持っている場合、あなたは間違いなく特別なデータベースを使用すべきだと思います。第二に、contacts.append(Person)を使用すると、swiftのコンパイラには意味がありません。

一つの選択肢は、ループを使用して、この配列に人を追加することです:あなたは多くのデータを持っている場合は

var contacts = [Person]() // take advantage of type inference 
let names = ["Jack", "alex", ...] // ... means you can add as many names as you want 
let surnames = ["Johnson", "a", ...] 
let phones = [2, 3, ...] 
let areCustomers = [false, false, ...] 

for i in 0..<10 { // this will add 10 elements to contacts 
    contacts.append(Person(name: names[i], surname: surname[i], phone: phones[i], isCustomer: areCustomers[i])) 
} 

、私はあなたがデータベースを使用することを検討すべきであると主張しなければなりません。

関連する問題