2016-11-11 2 views
2

구조체를 배열에 추가하려고합니다. 나는 그것이 가능하다는 것을 안다. 나는 사이트의 다른 게시물에서 그것을 보았다. 하지만 변수를 만들지 않고 배열에 구조체를 추가 할 수있는 방법이 있는지 궁금합니다. 예를 들어스위프트 - 구조체 배열 만들기

: 우리는 "접촉"을 만들 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])) 
} 

를 사용하면 많은 양의 데이터가 경우에, 나는 당신이 데이터베이스를 사용하는 것이 좋습니다 주장한다.