Я пишу небольшое приложение iOS, которое, я надеюсь, облегчит работу на моем поле. Я нахожусь в OS X El Capitan 10.11.4, используя Xcode 7.3 и записывая приложение для iOS 9.3.Как экспортировать выбор объекта UIPickerView в файл CSV?
Вот и вся идея: вместо того, чтобы подключать данные к листу бумаги, я хочу написать все в базовое приложение, подобное форме, которое будет использоваться на iPad, а затем приложение переносит данные на файл .csv.
У меня есть все, что выяснено (структура приложения, протокол передачи и получения данных и т. Д.), Но есть одна вещь, которая сводит меня с ума. Прежде чем я покажу вам код, который я использую, вот проблема. Когда я нажимаю кнопку «Сохранить», а затем переходите к проверке сохраненных данных, я не могу получить значение, выбранное объектами UIPickerView, которое будет передано в CSV-файл. Все остальное отлично работает. У меня есть два объекта UIPickerView. В одном у меня есть информация о сексе, закодированная как M, F и M/F; у другого есть информация о возрасте, закодированном как Adu, Juv, Hat. Я бы хотел, чтобы приложение сохраняло выбранное значение, но я не мог этого понять.
Любая помощь очень ценится. Благодарю.
Вот код, который я использую для моего ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UIPickerViewDataSource, UIPickerViewDelegate>
@property (strong, nonatomic) IBOutlet UIDatePicker *day;
@property (strong, nonatomic) IBOutlet UITextField *species;
@property (strong, nonatomic) IBOutlet UITextField *island;
@property (strong, nonatomic) IBOutlet UITextField *cay;
@property (strong, nonatomic) IBOutlet UITextField *pit;
@property (strong, nonatomic) IBOutlet UITextField *coordinatesN;
@property (strong, nonatomic) IBOutlet UITextField *coordinatesW;
@property (strong, nonatomic) IBOutlet UIPickerView *sex;
@property (strong, nonatomic) IBOutlet UIPickerView *age;
- (IBAction)saveInfo:(id)sender;
- (IBAction)retrieveInfo:(id)sender;
- (IBAction)retractKeyboard:(id)sender;
@property (strong, nonatomic) IBOutlet UITextView *resultView;
@end
И это код, который я использую для моего ViewConntroller.m
#import "ViewController.h"
@interface ViewController()
{
NSArray *pickerDataSex;
NSArray *pickerDataAge;
}
@end
@implementation ViewController
@synthesize resultView;
@synthesize day;
@synthesize species;
@synthesize island;
@synthesize cay;
@synthesize pit;
@synthesize coordinatesW;
@synthesize coordinatesN;
@synthesize sex;
@synthesize age;
- (IBAction)retractKeyboard:(id)sender {
[self resignFirstResponder];
}
- (IBAction)saveInfo:(id)sender {
NSString *resultLine=[NSString stringWithFormat:@"%@,%@,%@,%@,%@,%@,%@,%@,%@\n",
self.day.date,
self.species.text,
self.island.text,
self.cay.text,
self.pit.text,
self.coordinatesN.text,
self.coordinatesW.text,
self.sex.dataSource,
self.age.dataSource];
NSString *docPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 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];
[email protected]"";
[email protected]"";
[email protected]"";
[email protected]"";
[email protected]"";
[email protected]"";
NSLog(@"info saved");
}
- (IBAction)retrieveInfo:(id)sender {
NSString *docPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 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.
//Initialize picker data
pickerDataSex = @[@"M",@"F",@"M/F"];
pickerDataAge = @[@"Adu",@"Juv",@"Hat"];
//Connect data to picker
self.sex.dataSource = self;
self.sex.delegate = self;
self.age.dataSource = self;
self.age.delegate = self;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//Number of columns of the data
- (NSInteger)numberOfComponentsInPickerView: (UIPickerView *)pickerView
{
if (pickerView==self.sex){
return 1;
} else if (pickerView==self.age){
return 1;
}
return 0;
}
//Number of rows of data
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (pickerView==self.sex){
return pickerDataSex.count;
} else if (pickerView==self.age){
return pickerDataAge.count;
}
return 0;
}
//The data to return for the row and component (column) that's being passed
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (pickerView==self.sex){
return pickerDataSex[row];
} else if (pickerView==self.age){
return pickerDataAge[row];
}
return 0;
}
@end
Благодаря человеку. Это было потрясающе. Я исправил проблему. Я изучал использование делегатов, и я не мог понять этого. Теперь все работает отлично. – Cinghio