2017-12-13 22 views
-1
class abc{ 
    var name = String() 

    init(name:String){ 
     self.name = name 
    } 
} 

var obj = [abc]() 
obj[0] = abc(name:"sun") 
obj[1] = abc(name:"sharma") 
+0

난에 노력하고 있습니다 고려 정말 간단합니다 객체 클래스의 배열을 만들려면 여러 데이터를 작성하십시오. –

+1

이 경우에 무엇이 잘못 되었는가는 분명하지만 실제로 작동하지 않는 것을 설명하고 예상/실제 동작과 함께 컴파일/런타임 오류를 질문에 포함해야합니다. 특히 SO에 관한 모든 질문은 향후 독자들에게 유용 할 것이므로, 이러한 정보가 없으면 그렇지 않을 것입니다. –

답변

0

는 당신이 객체의 배열을 만드는 방법에 대해 물어 생각 ..

당신이 두 개의 클래스, 클래스 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) 
     } 
    } 

} 
+0

아주 좋은 이유가있는 경우가 아니면 (즉, IBOutlet을 정의하는 경우) 암시 적으로 unwrapped 된 선택 사항을 사용해서는 안됩니다. 'name'은 간단히'String' 일 수 있습니다 만,'String! '을 만들 이유가 없습니다 ... 코드의 형식을 올바르게 지정하십시오. 그렇지 않으면 실제로 읽는 것이 어렵습니다. –

2

문제는 사용자가 액세스하려고 시도 할 때 존재하지 않는 아래 첨자로 배열 요소에 액세스하려고하는 것입니다.

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) 인 스위프트 명명 규칙에 따라야한다.

+0

예 이제이 요소에 액세스 할 수있는 방법을 알려줍니다. –

+0

@surajKumar 내 업데이트 된 답변을 확인하십시오. –