2017-12-16 23 views
-3

입니다. 현재 문제는 다음과 같습니다. 약 500 개의 다른 문자열을 저장하기 만하면됩니다.데이터를 저장하는 가장 좋은 방법은

제 질문은 무엇을하는 것이 가장 좋은 방법입니까?

모든 문자열이 나중에로드되는 것으로 가정합니다. 사용자가 이전에 입력 한 내용에 따라 하나의 레이블에서 모든 문자열을 표시 할 수 있습니다.

실제로 함수를 500 회 호출하거나 if 문을 500 개 작성해야합니까? 또한이 데이터를 500 번 이상 저장해야합니까? 그렇다면 가장 좋은 방법은 무엇입니까?

+1

를 얻을 수 한 번 문자열? – matt

답변

0

입력과 관계없이 모든 500 개의 문자열을로드하려는 경우 단순히 문자열 배열을 저장할 수 있습니다. 반면에 입력을 기준으로 해당 500 개의 문자열에서 특정 문자열을 선택하려면 500 개의 키 : 값 쌍으로 사전을 저장할 수 있습니다. 키는 예상되는 입력 일 수 있으며 값은 해당 문자열입니다. 이렇게하면 런타임에 원하는 문자열을 얻을 수 있습니다.

+0

좋아요,하지만 배열에 모두 저장하면 별도로 호출해야합니다. 함께 500 개의 다른 호출 및 if 문으로 연결되거나 잘못 되었습니까? –

+0

왜 if 문이 필요합니까? 런타임시 입력 텍스트에 따라 500 개의 문자열 중 하나를 가져와야합니까? 그렇다면 왜 사전을 사용하지 않습니까? 문자열 선택이 입력에 의존하지 않으면 배열의 간단한 for 루프를 사용하여 모든 문자열을 간단하게 인쇄 할 수 있습니다. –

0

레이블의 태그 (정수) 속성을 사용하여 레이블을 식별 할 수 있습니다. 문자열을 배열에 순서대로 저장하십시오.

문자열을로드하려면 a 주기만 필요합니다. 사이클에서 현재 배열 항목의 색인은 주어진 레이블의 태그와 같습니다.

또는 별도로로드하려는 경우 원칙이 동일합니다. 배열 항목의 색인은 동일한 태그 값을 가진 레이블에 해당합니다.

당신은 해당 태그

이 기능은 상자 밖으로 작동하지 않을 수의 레이블을 다시 제공하는 도우미 메서드를해야 할 수도 있지만 생각 :) 이유 중 하나 개 배열을 저장하지

func label(ForTag tag: Int) -> UILabel { 
    for view in self.subViews { 
     if view.isKindOf(UILabel.self) { 
      if view.tag == tag { 
       return view 
      } 
     } 
    } 
}