2016-06-07 5 views
-2

배열과 그 배열의 내용을 호출 할 문자열을 구문 분석하는 방법 valueForKeyPath:내가 사용 배열을 문자열을 구문 분석하고 호출 할

예 :

NSArray *myArray = @[1,2,3,4,5,6,7,8]; 

내가 문자열의 아래

myArray[], myArray[3],myArray[1..3] 

이 이 문자열을 평가할 때 아래와 같은 출력을 원합니다.

evaluate(@"myArray[]") 
output:@[1,2,3,4,5,6,7,8] 
evaluate(@"myArray[3]") 
output:4 
evaluate(@"myArray[1..3]") 
output:@[2,3,4] 

메서드 및 함수 호출에 valueForKeyPath:을 사용하여 사용자 지정 함수를 이미 사용하고 있습니다. 배열과 매개 변수가 붙어 있습니다.

+0

작은 컴파일러를 작성한 것 같습니다. –

+0

Nope. 내 요구 사항은, 나는 서버에서 이러한 문자열을 얻을 것이다 및 동적으로 내 응용 프로그램 데이터에서 이러한 문자열을 평가하고 서버에 출력을 반환해야합니다. – Sumanth

+0

그게 무슨 뜻이야. 표현식의 텍스트 표현을 가져 와서 컴파일러 유형 함수 인 코드로 실행하려고합니다. (또는 아마도 "통역사"가 더 정확할 것입니다.) –

답변

1

당신은 당신이 시도한 것을 보여주지 않았기 때문에 문제가 무엇인지 명확하지 않습니다. 솔루션을 구축 할 수있는 것들 (valueForKeyPath:, 정규 표현식)에 대해 알고있는 것 같습니다.

  1. 문자열 내 모든 3 가지 형태로 표시 : 대괄호에서 제로, 하나 또는 두 개의 정수 뒤에 배열 이름 여기

    해결책의 개요이다. 이것을 분해하여 (적어도) NSRegularExpression 또는 NSScanner을 사용하여 1 ~ 3 개의 중요한 부분을 추출 할 수 있습니다. NSRegularExpression을 선택하는 경우 패턴을 [, ].으로 작성하는 것은 특수 문자이므로 적절한 이스케이프 처리가 필요할 것입니다. 설명서를 읽는 것만으로 충분합니다.
  2. 일단 세 부분을 가지면 valueForKey:을 사용하여 배열의 값을 얻을 수 있습니다 (속성 또는 인스턴스 변수라고 가정 함).
  3. 하나 또는 두 개의 색인을 일치/검사 한 경우 NSArray의 방법을 사용하여 개체를 가져올 수 있습니다. NSIndexSet이 유용 할 수 있습니다.

그게 전부입니다. 이 작업을 시도해 보았고 시도한 것을 보여주는 질문을 편집하고 문제가 무엇인지 밝히고 도움을 요청하십시오. 누군가가 더 멀리 도울 수있을 것입니다.

HTH

+0

고마워, 내가 이것을 체크 아웃합니다 – Sumanth

관련 문제