아이폰의 dat 파일에 NSString을 읽고 쓰는 데 문제가 있습니다.NSString 파일 읽기/쓰기
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *saveFile = [documentsDirectory stringByAppendingPathComponent:@"Profiles.dat"];
Boolean saveFileExists = [[NSFileManager defaultManager] fileExistsAtPath:saveFile];
// NSString *saveFile = [documentsDirectory stringByAppendingPathComponent:@"Profiles.dat"];
NSMutableData *gameData;
NSKeyedUnarchiver *decoder;
NSKeyedArchiver *encoder;
//decoder = [[NSKeyedUnarchiver alloc] initForWritingWithMutableData:gameData];
myGameState *gameState = [myGameState sharedMySingleton];
if(saveFileExists) {
gameData = [NSData dataWithContentsOfFile:saveFile];
decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:gameData];
gameState.Profile1 = [decoder decodeObjectForKey:@"Name1"];
gameState.Profile2 = [decoder decodeObjectForKey:@"Name2"];
gameState.Profile3 = [decoder decodeObjectForKey:@"Name3"];
gameState.Profile4 = [decoder decodeObjectForKey:@"Name4"];
gameState.Profile5 = [decoder decodeObjectForKey:@"Name5"];
gameState.curProfile = [decoder decodeObjectForKey:@"curProfile"];
[decoder release];
}
else {
gameData = [NSMutableData data];
encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:gameData];
gameState.Profile1 = @"Default1";
gameState.Profile2 = @"Default2";
gameState.Profile3 = @"Default3";
gameState.Profile4 = @"Default4";
gameState.Profile5 = @"Default5";
[encoder encodeObject:@"Default1" forKey:@"Name1"];
[encoder encodeObject:@"Default2" forKey:@"Name2"];
[encoder encodeObject:@"Default3" forKey:@"Name3"];
[encoder encodeObject:@"Default4" forKey:@"Name4"];
[encoder encodeObject:@"Default5" forKey:@"Name5"];
gameState.curProfile = gameState.Profile1;
[encoder encodeObject:gameState.curProfile forKey:@"curProfile"];
[encoder finishEncoding];
//[gameData writeToFile:<#(NSString *)path#> atomically:<#(BOOL)useAuxiliaryFile#>
[gameData writeToFile:saveFile atomically:YES ];
//[gameData writeToFile:saveFile atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil];
[encoder release];
}
gameState.curProfile 등은 모두 NSString 포인터입니다. 이제 목표 C에 대해 매우 새로운 것이고 제대로 작동하지 않는 것 같습니다. 나는 포럼 주위를 수색하고 이것을 기울이는 올바른 방법을 찾을 수 없습니다. 문자 그대로 내가 원하는 것은 dat 파일에 NSString을 쓰는 것입니다. 그러나 그것은 작동하지 않습니다. 나는 ints와 bool을 아무런 문제없이 쓸 수 있었지만, 스스로 문제는 해결할 수 없었다. 도움이 되셨습니다. 감사합니다. g
내가 잘못하고있는 것을 발견했습니다. 나중에 NSMutableString을 사용해야 했으므로 코드를 위의 코드가 멍청한 또 다른 실수를 저지른 것처럼 바꿨습니다. 그리고 그 링크에 대한 환호는 저에게 시간 낭비를 덜어 줄 것입니다. 나는 그 일을 할 때 더 쉬운 방법이 있어야한다고 생각했습니다. P 다시 감사드립니다. g – glogic