프로그램로드시 생성되는 NSMutableArray가 있습니다. 프로그램이 종료되면 배열을 파일에 저장합니다. 그런 다음 앱이 다시 시작되면이 파일이 존재하는지 확인하고, 그렇다면 배열로 읽습니다.NSMutableArray 파일에서 읽은 후 문자열이 변경됩니다.
문제는 처음 생성 할 때마다 문제가 발생합니다. 특정 문자열에 대해 배열 객체를 검사하고 동일하면 무엇인가하십시오. 이것은 처음에는 잘 작동합니다. 그러나 배열을 벌금형에서 읽어 들인 다음 동일성을 비교하면 둘 다 동일하다고 말하지만 그렇게 생각하지 않고 프로세스를 건너 뜁니다. 코드 예제 :
파일이 존재 처음부터 작성하지 않는 경우는 다음과 같습니다
NSMutableArray *tmpArray=[[NSMutableArray alloc] initWithObjects:
@"1000",
@"1000",
@"1000",
@"500",
@"500",
@"500",
@"250",
@"250",
@"250",
@"100",
@"100",
@"100",
@"100",
@"TRIPLE",
@"TRIPLE",
@"DOUBLE",
@"DOUBLE",
@"- 500",
@"- 250",
@" - 250",
@"- 100",
@"- 100",
@"HALF",
@"BUST",
nil];
파일이 존재하는 경우 :
다음 비교할 경우 다음pnames = [[NSMutableArray alloc] initWithContentsOfFile:myPath];
가 들어 오면
NSString *strInfo;
strInfo = [pnames objectAtIndex: theInteger - 1];
NSLog(@"strInfo: %@", strInfo);
if (strInfo == @"DOUBLE")
{
//do something
}
내가 말했듯이,이 비교는 첫 번째 생성시에는 잘 작동하지만 배열이 파일을 통해로드되는 경우에는 그렇지 않습니다. 파일을 작성
는을 통해 이루어집니다 : 나는 (위)에 strInfo에서 디버거에서 볼 때, 그것은으로 표시
(void)applicationWillTerminate:(UIApplication *)application {
[pnames writeToFile:[self saveFilePath] atomically:YES];
}
:
NSCFString - 0c8168 - DOUBLE ---에서 0x3d42af0이 - - 파일은 부하를 통해, 동일한 것으로 인식되지 않는 경우가 DOUBLE ---
여기에 대한 통찰력 g이다 생성하고,이 동등한
가NSCFString 인식 않는다 정말 감사합니다. 당신은 ==를 사용하여는 NSString 인스턴스를 비교할 수 없습니다
이런, 내가 그걸 알아야 했어. 좋은 답변 +1 –
그것은 첫 번째 하중에 근무 미묘한 잡았다 (지금 설명). 천만에요! – bbum