class abc{
var name = String()
init(name:String){
self.name = name
}
}
var obj = [abc]()
obj[0] = abc(name:"sun")
obj[1] = abc(name:"sharma")
답변
는 당신이 객체의 배열을 만드는 방법에 대해 물어 생각 ..
이당신이 두 개의 클래스, 클래스 A와 클래스 B
Class A{
var name:String
init(localName: String){
self.name = localName
}
}
Class B{
//here you can create an array of objects of class A
//this will create an empty array of objects of class A
var objList = [A]()
//to add data into this array u can use append
func addData(objA: A){
self.objList.append(objA)
}
func displayData(list : [A]){
for entry in list{
print(entry.name)
}
}
}
아주 좋은 이유가있는 경우가 아니면 (즉, IBOutlet을 정의하는 경우) 암시 적으로 unwrapped 된 선택 사항을 사용해서는 안됩니다. 'name'은 간단히'String' 일 수 있습니다 만,'String! '을 만들 이유가 없습니다 ... 코드의 형식을 올바르게 지정하십시오. 그렇지 않으면 실제로 읽는 것이 어렵습니다. –
문제는 사용자가 액세스하려고 시도 할 때 존재하지 않는 아래 첨자로 배열 요소에 액세스하려고하는 것입니다.
var obj = [abc]()
은 빈 배열을 초기화하기 때문에 아직 요소가 없기 때문에 하위 요소로 요소에 액세스 할 수 없습니다.
Array.append
을 사용하여 배열 끝 부분에 새 요소를 추가해야합니다.
var obj = [Abc]()
obj.append(Abc(name:"sun"))
obj.append(Abc(name:"sharma"))
또한 바로 당신이 그것에 저장할 요소와 배열을 만들 수 있습니다
var obj = [Abc(name:"sun"),Abc(name:"sharma")]
당신이 배열을 채울가 후에는 여러 가지 방법으로 요소에 액세스 할 수 있습니다. 당신이 배열을 반복 할 경우, 일반적으로 for...in..
루프를 사용할 수 있습니다 : 당신은 하나의 요소에 액세스하려면
for object in obj {
print(object.name)
}
을, 당신은 아무튼 배열 첨자를 사용하지만 것은 반드시 인덱스를 만드는 것이 할 수있는 색인 생성을 사용하기 전에 배열의 크기를 초과하지 마십시오.
let index = 1
if index < array.count { //safe to use index as subscript
print(obj[index])
}
는 또한 유형 upperCamelCase (Abc
대신 abc
) 인 스위프트 명명 규칙에 따라야한다.
예 이제이 요소에 액세스 할 수있는 방법을 알려줍니다. –
@surajKumar 내 업데이트 된 답변을 확인하십시오. –
난에 노력하고 있습니다 고려 정말 간단합니다 객체 클래스의 배열을 만들려면 여러 데이터를 작성하십시오. –
이 경우에 무엇이 잘못 되었는가는 분명하지만 실제로 작동하지 않는 것을 설명하고 예상/실제 동작과 함께 컴파일/런타임 오류를 질문에 포함해야합니다. 특히 SO에 관한 모든 질문은 향후 독자들에게 유용 할 것이므로, 이러한 정보가 없으면 그렇지 않을 것입니다. –