2010-01-12 3 views
0

반드시이 작업을 수행하는 더 짧은 방법이 있습니까?더 짧은 방법이 있나요?

NSString *filePathA = [[NSBundle mainBundle] pathForResource:@"A" ofType:@"txt"]; 
NSString *myTextA= [NSString stringWithContentsOfFile:filePathA encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresA = [myTextA componentsSeparatedByString:@"-"]; 




NSString *filePathB = [[NSBundle mainBundle] pathForResource:@"B" ofType:@"txt"]; 
NSString *myTextB= [NSString stringWithContentsOfFile:filePathB encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresB = [myTextB componentsSeparatedByString:@"-"]; 

NSString *filePathC = [[NSBundle mainBundle] pathForResource:@"C" ofType:@"txt"]; 
NSString *myTextC= [NSString stringWithContentsOfFile:filePathC encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresC = [myTextC componentsSeparatedByString:@"-"]; 

NSString *filePathD = [[NSBundle mainBundle] pathForResource:@"D" ofType:@"txt"]; 
NSString *myTextD= [NSString stringWithContentsOfFile:filePathD encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresD = [myTextD componentsSeparatedByString:@"-"]; 

NSString *filePathE = [[NSBundle mainBundle] pathForResource:@"E" ofType:@"txt"]; 
NSString *myTextE= [NSString stringWithContentsOfFile:filePathE encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresE = [myTextE componentsSeparatedByString:@"-"]; 

NSString *filePathF = [[NSBundle mainBundle] pathForResource:@"F" ofType:@"txt"]; 
NSString *myTextF= [NSString stringWithContentsOfFile:filePathF encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresF = [myTextF componentsSeparatedByString:@"-"]; 

NSString *filePathG = [[NSBundle mainBundle] pathForResource:@"G" ofType:@"txt"]; 
NSString *myTextG= [NSString stringWithContentsOfFile:filePathG encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresG = [myTextG componentsSeparatedByString:@"-"]; 

NSString *filePathH = [[NSBundle mainBundle] pathForResource:@"H" ofType:@"txt"]; 
NSString *myTextH= [NSString stringWithContentsOfFile:filePathH encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresH = [myTextH componentsSeparatedByString:@"-"]; 

NSString *filePathI = [[NSBundle mainBundle] pathForResource:@"I" ofType:@"txt"]; 
NSString *myTextI= [NSString stringWithContentsOfFile:filePathI encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresI = [myTextI componentsSeparatedByString:@"-"]; 

NSString *filePathJ = [[NSBundle mainBundle] pathForResource:@"J" ofType:@"txt"]; 
NSString *myTextJ= [NSString stringWithContentsOfFile:filePathJ encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresJ = [myTextJ componentsSeparatedByString:@"-"]; 

NSString *filePathK = [[NSBundle mainBundle] pathForResource:@"K" ofType:@"txt"]; 
NSString *myTextK= [NSString stringWithContentsOfFile:filePathK encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresK = [myTextK componentsSeparatedByString:@"-"]; 

NSString *filePathL = [[NSBundle mainBundle] pathForResource:@"L" ofType:@"txt"]; 
NSString *myTextL= [NSString stringWithContentsOfFile:filePathL encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresL = [myTextL componentsSeparatedByString:@"-"]; 

NSString *filePathM = [[NSBundle mainBundle] pathForResource:@"M" ofType:@"txt"]; 
NSString *myTextM= [NSString stringWithContentsOfFile:filePathM encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresM = [myTextM componentsSeparatedByString:@"-"]; 

NSString *filePathN = [[NSBundle mainBundle] pathForResource:@"N" ofType:@"txt"]; 
NSString *myTextN = [NSString stringWithContentsOfFile:filePathN encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresN = [myTextN componentsSeparatedByString:@"-"]; 

NSString *filePathO = [[NSBundle mainBundle] pathForResource:@"O" ofType:@"txt"]; 
NSString *myTextO= [NSString stringWithContentsOfFile:filePathO encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresO = [myTextO componentsSeparatedByString:@"-"]; 

NSString *filePathP = [[NSBundle mainBundle] pathForResource:@"P" ofType:@"txt"]; 
NSString *myTextP= [NSString stringWithContentsOfFile:filePathP encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresP = [myTextP componentsSeparatedByString:@"-"]; 

NSString *filePathQ = [[NSBundle mainBundle] pathForResource:@"Q" ofType:@"txt"]; 
NSString *myTextQ= [NSString stringWithContentsOfFile:filePathQ encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresQ = [myTextQ componentsSeparatedByString:@"-"]; 

NSString *filePathR = [[NSBundle mainBundle] pathForResource:@"R" ofType:@"txt"]; 
NSString *myTextR= [NSString stringWithContentsOfFile:filePathR encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresR = [myTextR componentsSeparatedByString:@"-"]; 

NSString *filePathS = [[NSBundle mainBundle] pathForResource:@"S" ofType:@"txt"]; 
NSString *myTextS= [NSString stringWithContentsOfFile:filePathS encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresS = [myTextS componentsSeparatedByString:@"-"]; 

NSString *filePathT = [[NSBundle mainBundle] pathForResource:@"T" ofType:@"txt"]; 
NSString *myTextT= [NSString stringWithContentsOfFile:filePathT encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresT = [myTextT componentsSeparatedByString:@"-"]; 

NSString *filePathU = [[NSBundle mainBundle] pathForResource:@"U" ofType:@"txt"]; 
NSString *myTextU= [NSString stringWithContentsOfFile:filePathU encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresU = [myTextU componentsSeparatedByString:@"-"]; 

NSString *filePathV = [[NSBundle mainBundle] pathForResource:@"V" ofType:@"txt"]; 
NSString *myTextV= [NSString stringWithContentsOfFile:filePathV encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresV = [myTextV componentsSeparatedByString:@"-"]; 

NSString *filePathW = [[NSBundle mainBundle] pathForResource:@"W" ofType:@"txt"]; 
NSString *myTextW= [NSString stringWithContentsOfFile:filePathW encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresW = [myTextW componentsSeparatedByString:@"-"]; 
//none with "X" 
//NSString *filePathX = [[NSBundle mainBundle] pathForResource:@"X" ofType:@"txt"]; 
//NSString *myTextX= [NSString stringWithContentsOfFile:filePathX encoding:NSUTF8StringEncoding error:nil]; 
//NSArray *arrayStructuresX = [myTextX componentsSeparatedByString:@"-"]; 

NSString *filePathY = [[NSBundle mainBundle] pathForResource:@"Y" ofType:@"txt"]; 
NSString *myTextY= [NSString stringWithContentsOfFile:filePathY encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresY = [myTextY componentsSeparatedByString:@"-"]; 

NSString *filePathZ = [[NSBundle mainBundle] pathForResource:@"Z" ofType:@"txt"]; 
NSString *myTextZ= [NSString stringWithContentsOfFile:filePathZ encoding:NSUTF8StringEncoding error:nil]; 
NSArray *arrayStructuresZ = [myTextZ componentsSeparatedByString:@"-"]; 

어떤 아이디어가 있습니까? 나는 그것을 굴절 시키라고 제안되었다. 그러나 나는 그것에 어떻게 잘 모른다!

감사

UPDATE :

[이 실제로 나쁜 같은 반복적 인 코드가? 메신저 시작하는거야? 이것이 나쁜 관행으로 간주 될 것인가? 또는 프로그래밍의 세계에서 '하지 마라'? ]

+1

아마도 루프와 배열을 사용하고 있을까요? –

+1

예를 좀 짧게 만들 수 있습니까? ;-) –

+0

예를 통해 내가하고 싶은 요점을 25/26 시간 –

답변

2

배열과 사전을 만드는 것이 좋습니다 : 하나는 모든 파일 경로를 보유하고 다른 하나는 arrayStructures를 유지하는 것입니다.

데이터를로드하려는 모든 파일 이름을 사용하여 filepaths 배열을 만듭니다.

arrayStructures 사전은 처음에는 용량이 25 (알파벳 -1 (x는 사용하지 않음)의 문자) 인 빈 NSMutableDictionary이어야합니다.

filepaths 배열을 반복하고 각 반복 끝에 수행 한 정확한 작업을 수행하십시오. addObject: forKey: arrayStructures 사전을 호출해야합니다.

NSMutableDictionary *structures = [ [ NSMutableDictionary alloc ] initWithCapacity:25 ]; 
NSArray *filePaths = [ [NSArray alloc] initWithObjects: @"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", /* no X */@"Y", @"Z" ]; // you could also just create a standalone text file and load it from there, i know this is ridiculous! 

for(NSString *path in filePaths) { 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:path ofType:@"txt"]; 
    NSString *myText = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 
    [ structures addObject: [myText componentsSeparatedByString:@"-"] forKey: path ]; 
} 
사전을 통해

이제 루프 ....

for(NSString *filePath in structures) { 
    NSArray *structure = [ structure objectForKey: filePath ]; 
    //... 
} 
+0

정확하게 편집 할 수 있습니까? 감사! –

+0

이것이 작동 할 것입니다. –

-1

당신은 정말이 매크로를 사용할 수있는 완벽한 기회처럼 보이는 생각하는 모든 로컬 변수를 원하는 경우 (내가 말할 감히 경우)

#define MAKEARRAY(_letter) \ 
    NSString *filePath ## _letter = [[NSBundle mainBundle] pathForResource:@ #_letter ofType:@"txt"]; \ 
    NSString *myText ## _letter = [NSString stringWithContentsOfFile:filePath ## _letter encoding:NSUTF8StringEncoding error:nil]; \ 
    NSArray *arrayStructures ## _letter = [myText ## _letter componentsSeparatedByString:@"-"] 

MAKEARRAY(A); 
MAKEARRAY(B); 
MAKEARRAY(C); 
: 
: 
MAKEARRAY(W); 
//MAKEARRAY(X); none with X 
MAKEARRAY(Y); 
MAKEARRAY(Z); 
+0

왜 "내가 감히 말하는거야?" 매크로가 잘못 되었나요? –

+0

나는 현명하게 사용하는 것이 좋지 않다고 생각한다. 그러나 당신은 downvote에 의해 그렇게 생각하는 사람들이 있다는 것을 볼 수 있습니다. (비록이 사용법에 대한 몇 가지 요구 사항을 넣으려고했지만 - "정말로 모든 로컬 변수가 필요합니다"). 여기에 "다른 옵션"과 마찬가지로 대답을 남겨 두겠습니다 (삭제하지 않음). – epatel

0

냄새는 루프를 작성할 수있는 좋은 기회입니다.

당신은 당신의 코드가 반복되는 것을 볼 수 있습니다, 그래서 당신이해야 할 무엇을, 로 루프 각 요소에서 유사한 구성 요소를 추출 입력 또는 출력 배열로 다른 compoenent를 추출하고있다 완료되었습니다.

관련 문제