2013-10-20 4 views
1

나는이 내 프로젝트에서 다음 클래스 :오류 코드 + 오류 설명

  • 자동차
  • 트럭
  • 자전거
  • 비행기

사용자가 입력 각 클래스를 초기화합니다. 예를 들어 Car의 경우 model, make 등으로 초기화합니다.

키 값 유효성 검사를 사용하여 각 모델의 모든 속성을 확인하는 유효성 검사 함수가 있습니다.

그런 다음 각 유효성 검사 함수에 대해 해당 함수에 대한 NSError 입력 매개 변수를 설정합니다.

문제는 20 개 이상의 오류 설명과 일치하는 20 개 이상의 오류 코드가 있습니다. 예를 들어 사용자가 유효한 자동차 모델을 입력하지 않은 경우 '유효한 자동차 모델을 입력하십시오.'라는 오류 설명과 함께 오류 코드 1000이 표시됩니다. 지금은 각 모델의 상위 클래스에있는 함수 내에서 긴 switch 문을 사용하여 각 오류 코드를 오류 설명과 비교하고 각 하위 클래스 유효성 검사 함수에 적절한 nserror 개체를 만듭니다. 오류 설명에 대한 20 개 이상의 오류 코드 매핑을 처리하는 더 좋고 관리하기 쉬운 방법이 있습니까?

또한 다른 질문은 오류 코드가 얼마나 구체적이어야합니까? 예를 들어, 자동차 모델이 nil이거나 자동차 모델이 유효한 모델이 아닌 경우 (nil이 아니고 유효하지 않은 경우), 둘 사이에 오류 코드가 있어야합니다.

답변

0

사용자의 상황을 완전히 이해하지 못했지만 오류 코드를 추가하는 동시에 오류 설명을 추가해야합니다 (예 : NSError 개체를 만들 때). 당신이 사용자에게 오류를 제시 할 필요가있을 때

[NSError errorWithDomain:@"aDomain" code:1 userInfo:@{NSLocalizedDescriptionKey: @"Please input valid car model."}];

그런 다음, 바로 오류의 설명을 잡아 :

NSString *errorText = error.userInfo[NSLocalizedDescriptionKey];

0

사전을 사용할 수 있습니다. 오류 코드를 NSNumber 인스턴스로 변환하고 연관된 값을 오류 설명으로 설정하십시오. 그런 다음 오류를 만들 때 사전에서 설명을 가져옵니다.

+0

은 어떻게 정의 할 수와 외부 변수에 같이있는 NSDictionary를 선언 또 다른 클래스 그래서 그것은 많은 수업에서 사용할 수 있을까? –

+0

사전을 리턴하는 공용 클래스 메소드를 가진 클래스를 가질 수 있습니다. 내부적으로이 메소드는 dict가로드되었는지 (정적 변수에 저장되어 있는지) 검사하고,로드되지 않은 경우로드하여 리턴합니다. – Wain