2012-06-01 3 views
2

URL을 검색하고 앱을 시작할 때 저장하려는 긴 문자열이 있습니다. 나중에 해당 문자열에 개별 값을 삽입하려고합니다.향후 자리 표시 자 사용을 위해 NSString에서 문자열 형식 지정자 (% @, % d 등)를 저장 하시겠습니까?

나는 같은 것을 할 싶습니다

NSString *numberLine = @"1 %@ 3 %@ 5 %@"; 

//... (later) ... 

NSString *final = [NSString stringWithFormat:numberLine, @"two", @"four", @"six"]; 

NSLog(@"%@", final); //Should output "1 two 3 four 5 six" 

은 내가 @"two" 이전 numberLine에 저장 한 자리 %@에 삽입합니다.

이와 같은 작업을 수행하는 좋은 방법이 있습니까? 당신이 묘사하는 템플릿입니다

NSString *script = @"width = PLACEHOLDERpx"; 
script = [script stringByReplacingOccurrencesOfString:@"PLACEHOLDER" withString:@"12"]; 
+2

첫 번째 구성표는 잘 작동합니다. 그 너머에서 뭘하고 싶니? –

+0

Arg, 당신 말이 맞아요. 나는 원래의 문제가 더 큰 문자열 일지라도 작동하지 않는다고 맹세 할 수 있었다. 어쩌면 거기에 또 다른 오류가있었습니다. – cksubs

답변

4

:

지금까지 내 유일한 생각은 그런 짓을하는 것입니다. 자리 표시자를 데이터로 채울 문자열에 남기고 싶습니다. 문자열이 복잡 해짐에 따라 문자열을 통해 % @ 및 % d을 (를) 사용할 수는 있지만 어려울 수 있습니다. Objective-CMustache과 같은 템플릿 라이브러리를 사용할 수 있습니다. 이것은 당신이이 같은 표현을 쓸 수있게된다 :

Hello {{SomeVariable}} 

당신이 렌더링 할 데이터에 해당하는 키를 가진 NSDictionary 전달하기 만하면됩니다. 당신이 위의 예는 다음을 수행 할 수 이처럼 :

NSString *result = [GRMustacheTemplate renderObject:[NSDictionary dictionaryWithObject:@"World" forKey:@"SomeVariable"]; 
             fromString:@"Hello {{SomeVariable}}" 
               error:NULL]; 

이것은 result 문자열 Hello World를 생성합니다.