2012-06-25 4 views
2

내 앱에는 약 30 개의 문자열이 있는데 어딘가에 저장하고 싶습니다. 나중에 두 개 클래스에서 사용하기를 원하며 모든 클래스에서 한 번만 사용됩니다. 그것을 저장하는 가장 좋은 곳은 어디입니까? 나는 이오스에서 싱글 톤 클래스에 관해 읽었지 만, 이것이 나를위한 해결책인지 확실하지 않다.상수 문자열을 저장하는 곳

나는 내가 배열을 검색 할 수 있습니다 루프 곳 에있는 NSArray 같은 것을 만들고 싶어.

NSArray *arr = [NSArray arrayWithObjects:@"something",@"else", nil]; 

하지만 난 .H 파일에 그것을 할 수 있고, 내가 상수 변수 내가 클래스를 갖고 싶어 있는지 확실하지 않습니다 :

나는 그것을 좋아 정의하기 위해 노력했습니다.

답변

2

음, 당신은 NSArray 및 모든 NSStrings 그 안에 다음을로드 할 수있는 PLIST 파일을 가질 수 있습니다 op가 원하는 것을 위해, plist는 충분하다.

+0

내가 그 일을하고 plist에서 myArray에 액세스하려고 할 때 plistPath nil (0x00000000)이 나타납니다. * 응용 프로그램 didFinishLaunching *에서 액세스하려고합니다. * 및 myArray의 [AppName] -Info.plist에 5 개의 항목이 있습니다. 왜? – Kuba

+0

Oooh, 나는 틀린 것을 알아 낸다. 이 파일은 별도의 plist 파일입니다. – Kuba

+0

잠시 동안 당신은 응용 프로그램 번들에 plist 파일을 추가하지 않았습니다. – Peres

0

"기타 소스 폴더"에있는 "MyProjectName_Prefix.pch"를 사용해야합니다. 여기에 포함 된 모든 포함 및 정의가 프로젝트의 각 클래스에 포함됩니다. 가장 좋은 방법은 "IMHO, 모든 상수를"myStringConstants.h "파일에 넣은 다음"MyProjectName_Prefix.pch "파일을 포함시키는 것입니다.

+0

NSArray에 NSString이 포함되어 있다고 선언하는 방법은 무엇입니까? – Kuba

+0

당신이 대답을 편집하지만 NSString을 사용하여 NSArray를 h 파일에 선언하는 방법을 봅니다. 이것이 나의 주요 이슈이다. – Kuba

+0

질문에 대한 오해가있었습니다. 응용 프로그램에서 공유해야하는 객체 인 경우 앞서 언급 한 것처럼 싱글 톤 패턴이 솔루션입니다. – FredericK

0

당신은 일반 C 스타일을 사용할 수 있습니다

NSString* const arr[] = {@"something",@"else"}; 
const int arrSize = sizeof(arr)/sizeof(arr[0]); 

void printArr() 
{ 
    for(int i=0; i<arrSize; i++) { 
     NSLog(@"%@", arr[i]); 
    } 
} 

가 .H 파일을 사용 extern에 프로토 타입을 선언하려면 :

extern NSString* const arr[]; 
extern const int arrSize; 
1

를 배열를 들어, 당신은 할 수 없습니다! 상수는 런타임에 생성되며 표현식을 사용하여 상수를 초기화 할 수 있습니다. 해당 메서드 내에서 배열을 반환하고 static NSArray * arr을 사용하여이를 싱글 톤으로 처리하는 편리한 클래스 메서드를 선언 할 수 있습니다.

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"myArray" ofType:@"plist"]; 
NSArray *myArrayOfStrings = [NSArray arrayWithContentsOfFile:plistPath]; 

싱글 톤 패턴, 솔루션입니다하지만 : 당신이 괜찮다면

관련 문제