【发布时间】:2013-01-28 04:51:50
【问题描述】:
所以在我的应用程序的第一个视图控制器中,我试图创建一个包含字符串的 csv 文件,但由于某种原因它不起作用。我正在使用此代码:
-(IBAction)initialButton:(id)sender {
NSLog(@"initialButton clicked");
if([securityCode.text length] == 8){
NSString *securtityCodeData = [NSString stringWithFormat:@"%@",
self.securityCode.text];
NSString *docPath =[NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSString *securityCodes=[docPath stringByAppendingPathComponent:@"securityCodes.txt"];
if (![[NSFileManager defaultManager] fileExistsAtPath:securityCodes]){
[[NSFileManager defaultManager]createFileAtPath:securityCodes contents:nil attributes:nil];
}
NSFileHandle *fileHandel = [NSFileHandle fileHandleForUpdatingAtPath:securityCodes];
[fileHandel seekToEndOfFile];
[fileHandel writeData:[securtityCodeData dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandel closeFile];
NSLog(@"security code has been saved\nSecurity code:%@",securtityCodeData);
NewTrackTraceViewController *newTrackTraceViewController = [[NewTrackTraceViewController alloc]init];
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.transitionController transitionToViewController:newTrackTraceViewController withOptions:UIViewAnimationOptionTransitionCrossDissolve];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
[[NSUserDefaults standardUserDefaults] synchronize];
} else {
[WCAlertView showAlertWithTitle:@"Security code is not valid"
message:@"Please enter a valid securitycode to continue."
customizationBlock:^(WCAlertView *alertView) {
alertView.style = WCAlertViewStyleVioletHatched;
} completionBlock:^(NSUInteger buttonIndex, WCAlertView *alertView) {
} cancelButtonTitle:@"Cancel" otherButtonTitles:@"Okay",nil];
}
}
然后我们推送到我的第二个视图控制器,在那里我想读取 csv 文件并将其内容放在标签中:
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *docPath =[NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSString *securityCodes=[docPath stringByAppendingPathComponent:@"securityCodes.csv"];
if([[NSFileManager defaultManager] fileExistsAtPath:securityCodes]){
securityCodeLabel.text = securityCodes;
NSFileHandle *fileHandel = [NSFileHandle fileHandleForReadingAtPath:securityCodes];
NSString *securityCodeData=[[NSString alloc]initWithData:[fileHandel availableData] encoding:NSUTF8StringEncoding];
[fileHandel closeFile];
self.securityCodeLabel.text=securityCodeData;
NSLog(@"%@",securityCodeData);
}else{
NSLog(@"File does not exist");
self.securityCodeLabel.text=@"No security code found!";
}
}
我做错了什么?由于某种原因,该文件未保存..
【问题讨论】:
-
你的意思是写到 NSDocumentationDirectory 而不是 NSDocumentDirectory?
-
太棒了,这是问题,非常感谢:D
-
旁注:将这个:
NSString *securtityCodeData = [NSString stringWithFormat:@"%@", self.securityCode.text];更改为这个:NSString *securtityCodeData = self.securityCode.text;。除非您确实有要格式化的字符串,否则不要使用字符串格式。 -
旁注2:无需文件句柄即可将文件读入
NSString。只需使用NSString stringWithContentsOfFile:encoding:error:。
标签: iphone ios objective-c csv