我正在尝试构建一个应用程序,该应用程序将文本填充数据保存为CSV文件,然后可以在以后通过电子邮件发送。 我已经在线阅读了一些教程,并提出了一个可行的应用程序,但有一些问题(请参阅下面的编码)。
在视图中.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize first;
@synthesize seconds;
@synthesize tel;
@synthesize resultview;
- (IBAction)retractkeyboard:(id)sender{
[self resignFirstResponder];
}
-(IBAction)saveinfo:(id)sender{
NSString *resultLine=[NSString stringWithFormat:@"%@,%@,%@\n",
self.first.text,
self.seconds.text,
self.tel.text];
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)objectAtIndex:0];
//resultview.text = docPath;
NSString *surveys=[docPath stringByAppendingPathComponent:@"results.csv"];
if (![[NSFileManager defaultManager] fileExistsAtPath:surveys]) {
[[NSFileManager defaultManager]
createFileAtPath:surveys contents:nil attributes:nil];
}
NSFileHandle *filehandle = [NSFileHandle fileHandleForUpdatingAtPath:surveys];
[filehandle seekToEndOfFile];
[filehandle writeData:[resultLine dataUsingEncoding:NSUTF8StringEncoding]];
[filehandle closeFile];
self.first.text=@"";
self.seconds.text=@"";
self.tel.text=@"";
NSLog(@"info saved");
}
-(IBAction)retrieveinfo:(id)sender{
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)objectAtIndex:0];
//resultview.text = docPath;
NSString *surveys=[docPath stringByAppendingPathComponent:@"results.csv"];
if([[NSFileManager defaultManager] fileExistsAtPath: surveys])
{
NSFileHandle *filehandle = [NSFileHandle fileHandleForReadingAtPath:surveys];
NSString *surveyresults=[[NSString alloc] initWithData:[filehandle availableData] encoding:NSUTF8StringEncoding];
[filehandle closeFile];
self.resultview.text=surveyresults;
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
在视图中.h:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UITextField *first;
@property (strong, nonatomic) IBOutlet UITextField *seconds;
@property (strong, nonatomic) IBOutlet UITextField *tel;
-(IBAction)saveinfo:(id)sender;
-(IBAction)retrieveinfo:(id)sender;
-(IBAction)retractkeyboard:(id)sender;
@property (strong, nonatomic) IBOutlet UITextView *resultview;
@end
我的问题是:该应用告诉我数据已保存到.csv文件中,但我似乎无法在任何地方找到它? (我甚至已经进入了mac的库文件夹等,但除了文件之外还找到了其他所有内容)我知道它保存它但不知道在哪里!加载功能也不起作用,但我觉得这是因为它不能加载文件,因为它不存在。有什么帮助吗?
答案 0 :(得分:0)
您是否通过模拟器在Mac上运行此功能?你说它是iOS。如果您在Sim上运行,您将在〜/ Library / Application Support / iPhone Simulator / X.X / Applications / XXX /
中找到这些文件XX是在SIM卡上运行的iOS版本,而XXX是用于放置文件的一些哈希值(您必须查看文件夹才能找到您的应用。< / p>
答案 1 :(得分:0)
如果您使用手机看看:
How do I export text from iOS application to desktop PC?
在plist中你必须添加一个属性: 应用程序支持iTunes文件共享
然后您可以从iTunes查看该文件。
答案 2 :(得分:0)
输入一些NSLog语句,以确切了解文件的位置:
NSLog(@"surveys path: %@", surveys);
这是错误:
Incorrect: `NSDocumentationDirectory`
Correct: `NSDocumentDirectory`
surveys
对于文件路径来说是一个可怕的名称,会引起混淆,像surveysPath
这样会更好。
您可以使用调试器添加断点,跟踪执行并检查变量的值。调试是学习和熟练的必要技能 - 除非你能在100%的时间内第一次编写正确的代码。
提示:最佳实践是DRY(不要重复自己),创建一个返回路径的方法,将文件名作为参数。当然它只有几行,但只有一个地方可以更新。
示例代码:
- (NSString *)documentPathForFileName:(NSString *)fileName {
NSString *documentFolderPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *filePath = [documentFolderPath stringByAppendingPathComponent:fileName];
return filePath;
}