0
分隔的文件,我發現這個片段在網上寫,然後將數據追加到一個文本文件:創建標籤在Objective-C
- (void)appendText:(NSString *)text toFile:(NSString *)filePath {
// NSFileHandle won't create the file for us, so we need to check to make sure it exists
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:filePath]) {
// the file doesn't exist yet, so we can just write out the text using the
// NSString convenience method
NSError *error = noErr;
BOOL success = [text writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (!success) {
// handle the error
NSLog(@"%@", error);
}
}
else {
// the file already exists, so we should append the text to the end
// get a handle to the file
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:filePath];
// move to the end of the file
[fileHandle seekToEndOfFile];
// convert the string to an NSData object
NSData *textData = [text dataUsingEncoding:NSUTF8StringEncoding];
// write the data to the end of the file
[fileHandle writeData:textData];
// clean up
[fileHandle closeFile];
}
}
這對我來說很有意義。我有一個有3個屬性的類,NSString,NSInteger和NSString。當我嘗試使用這種方法時,我這樣做:
for (MyObject *ref in array) {
NSString *stringToFile = [NSString stringWithFormat:@"%@\t%i\t%@", ref.ChrID, ref.Position, ref.Sequence];
[self appendText:stringToFile toFile:filePath];
}
它看起來不太正確。我的數據如下所示:
NSString *tab* NSInteger *single space* NSStringNSString *tab* NSInteger newline
NSStringNSString *tab* NSInteger newline
NSStringNSString *tab* NSInteger newline
NSStringNSString *tab* NSInteger newline
NSStringNSString *tab* NSInteger newline
NSStringNSString *tab* NSInteger newline
NSStringNSString *tab* NSInteger newline
NSStringNSString *tab* NSInteger newline
...
我不確定發生了什麼事情來使它看起來像這樣。當我NSLog數據,它看起來很好。但是,第一行的東西會搞砸,然後一切都會消失。有什麼想法嗎?謝謝。
首先,在格式化字符串的末尾加上換行符(\ n)。您可能需要一對\ r \ n。 – Flyingdiver
另外,MyObject的聲明是什麼? – Flyingdiver
@Flyingdiver據我所知,在Windows上需要'\ r \ n'對,但不是任何基於Unix的文件系統(包括OS X和iOS),儘管大多數Unix系統都能容忍它們。 – jlehr