それで、今朝、非常に奇妙な問題に遭遇しました。時間が経つにつれて常に大きくなる がありNSMutableString
、時々ディスクに保存され、基本的に常に大きくなるテキストファイルが作成されます。数時間前までは完全に機能していました。ちなみに、メソッドのコードも変更していません。これは私が使用しているコードで、NSMutableString
stringToSave と呼ばれます。
- (void)saveToTextFile {
NSLog(@"SaveTextToFile called");
// Get Current date and time:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"hh:mm"];
NSDate *now = [[NSDate alloc] init];
NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];
NSString *dateToBeDisplayed = [NSString stringWithFormat:@"Date: %@, Time: %@.", theDate, theTime];
// Create text to save, and save it.
stringToSave = [NSString stringWithFormat:@"\n %@ ",dateToBeDisplayed];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"mynotes"];
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath];
[fileHandle seekToEndOfFile];
[fileHandle writeData:[stringToSave dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];
// Check what's saved there.
NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSStringEncodingConversionAllowLossy error:nil];
NSLog(@"File Content: %@", content);
NSLog(@"stringtosave: %@", stringToSave);
}
奇妙な部分は、stringToSave
NSLog に常に適切なデータが含まれている一方で、content
空のままであることです。上記のデータの保存方法に何か問題があると思いますか?