我正在处理注册表单应用。现在我正试图想出一种动态创建表单的方法。现在我有一个硬编码的表单,带有硬编码的问题,可以将表单数据保存到.csv文件中。以下是一些代码:
// saves text field data in comma separated CSV file format
NSString *formData = [NSString stringWithFormat:@"%@,%@,%@,%@,%@,%@,%@,%@,%@,%@,%@\n",
self.nameTextfield.text, self.emailTextfield.text,
self.phoneTextfield.text, self.termTextfield.text,
self.schoolTextfield.text, self.graduationTextfield.text,
self.gpaTextfield.text, degreeString,
self.interestTextfield.text, groupString,
appliedString];
// get document directory path
NSString *documentDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)objectAtIndex:0];
NSString *csv = @".csv";
NSString *filename = [NSString stringWithFormat:@"%@%@", _eventName.text, csv];
// append results.csv onto doc path
NSString *event = [documentDirectoryPath stringByAppendingPathComponent:filename];
// creates folder if it does not exist
if (![[NSFileManager defaultManager] fileExistsAtPath:event]) {
[[NSFileManager defaultManager] createFileAtPath:event contents:nil attributes:nil];
}
NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:event];
[fileHandle seekToEndOfFile];
[fileHandle writeData:[formData dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];
基本上我希望能够在应用程序上创建一个可以是任意数量的问题的表单,并使用分段控件或文本输入。我看到的一个问题是以逗号分隔格式格式化文件。例如,如果应用程序创建了5个问题,那么如何格式化文件,使formData = [NSString stringWithFormat:@“%@,%@,%@,%@,%@ \ n”]而不对其进行硬编码?< / p>
非常感谢你的帮助!
答案 0 :(得分:0)
正确创建动态表单的一种方法(但不是唯一方法)是构建典型的块(例如switch-block,textfield-block等)。您可以添加这些块以手动查看或使用UITableView。您还需要描述具体形式(块的数量和类型)的数据结构。
格式化文件没问题,因为您始终可以使用NSMutableString并逐个追加值。