2010-02-16 3 views
14

"모의 (mock)"데이터 서비스와 실제 데이터 서비스를 쉽게 전환 할 수있는 방법을 제시하려고합니다. 기본적으로 실제 웹 서비스가있는 라이브 서버가 있지만 어떤 이유로 개발자는 정적 파일 (파일 URL)에서 데이터를로드하려고 할 수 있습니다.Xcode - 사용자 지정 구성의 파일 제외 - 더 나은 방법?

데이터를 가져 오는 메소드를 재정의하는 카테고리를 작성하여 원래의 코드를 변경하지 않고이 문제를 해결할 수있을 것이라고 생각했습니다. "모의"데이터 개념이 없습니다. 내 코드를 #ifdef으로 처리하고 싶지 않습니다.

범주가있는 각 파일의 맨 앞에 #ifdef를 넣을 수 있으며 구성 설정에서 사용자 지정 플래그를 설정할 수 있지만 파일을 포함 시키거나 제외시키는 방법이 있습니다. 구성에 따라 다릅니다. 그게 가능하니? 이 문제를 어떻게 해결합니까?

답변

31

는 파일 이름 목록에 설정하는 사용자 지정 빌드의 값 (또는 그와 일치하는 패턴에서 파일을 제외하고 설정하려는 트릭 구성에 EXCLUDED_SOURCE_FILE_NAMES을 정의하는 것입니다 http://lists.apple.com/archives/xcode-users/2009/Jun/msg00153.html

를 참조하십시오 , 파일 이름 만).

+7

빙고. Xcode를 익숙하지 않은 사람이라면이 내용을 자세히 기록해야합니다. INCLUDED_SOURCE_FILE_NAMES이 (가) EXCLUDED_SOURCE_FILE_NAMES을 (를) 재정의합니다. –

+0

고마워요! 그것은 매우 도움이되었다! – RPM

+0

팁 : 파일 이름에 와일드 카드를 사용할 수 있습니다. – Awsed

1

하나는 모의 범주가 있고 다른 하나는 모의 범주가없는 두 개의 대상을 만드는 것이 좋습니다.

테스트를 원할 때 모의 범주가 포함 된 타겟을 작성하기 만하면됩니다. 다른 모든 것은 동일하게 유지 될 수 있습니다.

+0

다른 대상으로 공격 할 수 있습니까? 사람들이 두 파일 (또는 여러 파일)에 새 파일을 추가하는 것을 잊어 버릴지 걱정됩니다. 또한, 우리는 이미 다른 목표 (iPad vs iPhone) - 아이디어를 사용하고 있습니까? –

+0

빌드 스크립트를 커스터마이즈하기위한 cdespinosa의 제안이 어떤면에서는 '자동'으로 만드는 유일한 방법이라고 생각합니다. 파일에 명명 규칙을 사용하면 스크립트가 파일을 포함하거나 제외 할 수 있어야합니다. 그러나 프로세스의 어느 시점에서 어떤 파일이 어떤 대상에 포함되는지 Xcode에 알려주는 수동 단계가 항상 있어야합니다. 링커는 마음을 읽을 수 없습니다. ;-) – TechZen

1

파일을 추가하고 싶지만 컴파일하지 않으려는 경우. 모든 대상에 대해 프로젝트> 빌드 단계> 소스를 컴파일하고 컴파일하지 않으려는 파일을 꺼냅니다.