2014-09-29 7 views
0

그래서 Xcode에서 친구의 작은 프로그램을 프로그래밍하고 있습니다.동일한 객체의 서로 다른 유형

개체의 여러 인스턴스를 초기화하고 배열에 넣은 다음 문자열을 반환하는 함수를 통해 반복하고 싶습니다. 각 객체는 반복 될 때 객체의 변수에 따라 해당 문자열에 텍스트를 추가합니다.

클래스가 트리라고 가정 해 보겠습니다. 클래스의 변수는 name (문자열), height (int) 및 hasLeaves (bool)입니다 (현재 나뭇잎에 날씨가 있거나없는 날씨). 나는 쉽게 인쇄 할 수 있습니다 :

"이것은 높이m 높이와 잎을이있는 이름입니다

문제 내가 문자열이 조금 다를 수 따라 할 것입니다. 나무의 종류에는이처럼 :. 오크 (이름)이 크고 lifeful입니다

, 그것의 높이미터 높이 잎은입니다.

사과 나무 (이름은)는 키가 큰 높이를미터을 그리고 을 가지고, 어떤 사과를 전달합니다. 당신이 이제까지 스웨덴을 방문하는 경우

당신은 전나무 (이름)를 체크 아웃해야합니다, 그들은 높이 높이 없어 있습니다.

나를 위해 코드를 작성하는 것을 원하지 않지만 실마리를 제공합니다. 나는 무엇을 찾을 지 모른다. 각 트리에 대한 하위 클래스를 만드는 것에 대해 생각하고 있었지만 모든 하위 클래스는 프로그램에서 한 번만 나타났습니다. 필요한지 아닌지는 알 수 없습니다.

당신이 알고 있듯이, 나는이 질문을 공식화하는 데 어려움을 겪고 있습니다. 그러나 당신이 나의 의도를 이해한다면 나는 얻을 수있는 어떤 단서라도 기쁘게 생각합니다.

편집 : 그럼이 코드에서 보여 내 시도 :

등급 :

class tree { 

var treeHeight: Int? 
var treeWidth: Int? 
var hasLeaves: Bool 
var treeString: String 


init (height: Int?, width: Int?, leaves: Bool, theString: String) { 

    self.treeHeight = height 
    self.treeWidth = width 
    self.hasLeaves = leaves 
    self.treeString = theString 

    } 

}

주요 기능 :

var oak: tree = tree(height: 1, width: 2, leaves: true, theString:"Oh, the mighty oak") 
var appleTree: tree = tree(height: 1, width: 2, leaves: false, theString: "Yummy Apples") 

var treeArray: Array = [oak, appleTree] 
var resultString = "This is the stories of the trees: " 


for tree in treeArray { 

     if tree.hasLeaves == true { 

      resultString = resultString + tree.theString 
      } 

     } 

그래서, "resultString"에 추가 된 문자열을 다른 것으로 지정하고 싶습니다. 어떤 종류의 나무인지는 모르겠지만 그 개체의 초기화에서 그 문자열을 설정하고 싶지는 않지만 "종류"의 나무가 무엇인지에 따라 다릅니다. 그게 이해하기 쉽게합니까?

트리의 "종류"에 따라 문자열 (treeString)이 정적이되도록하고 싶습니다. 그래서 그것이 오크라면, 그 끈은 항상 "오, 참나무 오크"입니다.

+0

"개체의 여러 인스턴스를 어떻게 초기화 하시겠습니까?" 값을 하드 코딩 하시겠습니까? 파일에서 읽으시겠습니까? 지금까지 작성한 코드를 보여주십시오. –

+0

이 문제를 해결하는 방법에 대한 아이디어를 더 자세히 설명하고, 코드를 작성하고 여기에 게시하여 적절하게 작동하지 않는다고 생각하는 것을 강조하십시오. 질문은 지금과 같이 너무 일반적이어서 곧 닫힐 수 있습니다. 화제 떨어져 있으십시오 – Antonio

+0

안녕, 당신의 대답을위한 감사합니다. 곧 일부 코드를 게시 할 예정입니다. 너에게, 롭, 나는 틀린 말을 쓸지도 몰라. 나는 방금 몇 달 전에 프로그래밍을 시작했다. – Mattias

답변

0

잎과 같은 일부 속성이있는 트리 클래스가 필요한 것 같습니다.어쩌면 당신은 내가 WWDC 2014 비디오 추천 등의 색상과 같은 추가 속성을 남긴다 서브 클래 싱하려면 :

http://youtu.be/W1s9ZjDkSN0

어딘가에 30 분 정도가 서브 클래스에서 레이싱과 자동차 클래스의 데모가있다.

개체 생성과 관련하여 각 개체를 개별적으로 작성한 다음 하나의 옵션으로 배열로 수집 할 수 있습니다. 예를 들어 앱의 양식에서 사용자가 클래스 또는 하위 클래스에 대한 데이터를 입력 한 다음 객체를 만들고 마스터 배열에 저장 한 다음 파일에 보관할 수 있습니다. 누군가가이 질문에 실수를 한단다 경우

+0

스티브 감사합니다, 링크와 조언을 주셔서 감사합니다 :) – Mattias

0

그래서, 이것은 내가 배운 것입니다 : 내가 서브 클래스 및 프로토콜을 찾고 있었다

. 오브젝트가 특정 서브 클래스인지 여부를 판별하는 메소드가 있으며, 제 경우에는 특정 메소드 및/또는 메소드와 함께 "트리"라는 프로토콜을 가질 수 있으며 "oak"및 " 전나무".

관련 문제