수백 개의 고객 레코드를 탭으로 구분 된 파일에서 NSArrayController로 가져 오는 루틴을 작성하려고합니다.NSArrayController 이것이 작동하지 않는 이유는 무엇입니까?
이 내 초기 코드 :
이NSString *stringFromFile = [NSString stringWithContentsOfFile:[fileURL path]
encoding:NSUTF8StringEncoding error:&error];
NSArray *paragraphsArray = [stringFromFile componentsSeparatedByString:@"\r"];
NSMutableDictionary *destDict = [[NSMutableDictionary alloc] init];
int i;
for (i = 0; i <= [paragraphsArray count]-1; i++) {
NSString *currentParagraph = [paragraphsArray objectAtIndex:i];
if ([currentParagraph length ] > 4) {
NSArray *elementsArray = [currentParagraph componentsSeparatedByString:@"\t"];
if ([elementsArray count] > 0) {
currentSerial++;
[destDict setObject:[NSString stringWithFormat:@"%ld",currentSerial]
forKey:@"idSerial"];
[destDict setObject:[elementsArray objectAtIndex:1]
forKey:@"destRazaoSocial"];
[destDict setObject:[elementsArray objectAtIndex:2]
forKey:@"destLogradouro"];
[destDict setObject:[elementsArray objectAtIndex:3]
forKey:@"destLogradouroNro"];
/// repeat this for every field...
//Add the record:
[destArrayController addObject:destDict];
}
}
}
이 코드는 내가 예를 들어 4 개 기록이있는 경우 기록이 잘못 삽입되도록, 삽입 된 네 개의 레코드가 마지막 레코드와 같은 내용이있을 것이다.
NSString *stringFromFile = [NSString stringWithContentsOfFile:[fileURL path]
encoding:NSUTF8StringEncoding error:&error];
NSArray *paragraphsArray = [stringFromFile componentsSeparatedByString:@"\r"];
int i;
for (i = 0; i <= [paragraphsArray count]-1; i++) {
NSString *currentParagraph = [paragraphsArray objectAtIndex:i];
if ([currentParagraph length ] > 4) {
NSArray *elementsArray = [currentParagraph componentsSeparatedByString:@"\t"];
if ([elementsArray count] > 0) {
NSMutableDictionary *destDict = [[NSMutableDictionary alloc] init];
currentSerial++;
[destDict setObject:[NSString stringWithFormat:@"%ld",currentSerial]
forKey:@"idSerial"];
[destDict setObject:[elementsArray objectAtIndex:1]
forKey:@"destRazaoSocial"];
[destDict setObject:[elementsArray objectAtIndex:2]
forKey:@"destLogradouro"];
[destDict setObject:[elementsArray objectAtIndex:3]
forKey:@"destLogradouroNro"];
/// repeat this for every field...
//Add the record:
[destArrayController addObject:destDict];
[destDict release];
}
}
}
이 작동하지만, 나에게 우아한 보이지 않는 : 나는이에 코드를 변경하는 경우
는하지만, destDict을 allocing 모든 루프를 부수고, 그것을 작동합니다. 나에게이 작업을 수행하는 올바른 방법을 알려 주시면 친절하십니까?