iOS: 创建一个动态注册表单
iOS: Create a dynamic registration form
我正在开发注册表应用程序。现在我正在尝试想出一种动态创建表单的方法。现在我有一个带有硬编码问题的硬编码表单,它将表单数据保存到 .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"] 不硬编码?
非常感谢您的帮助!
正确创建动态表单的一种(但不是唯一)方法是使用典型的块(例如开关块、文本字段块等)构建它。您可以添加这些块以手动查看或使用 UITableView 等。您还需要描述具体形式的数据结构(块的数量和类型)。
格式化文件没问题,因为您总是可以使用 NSMutableString 并一一附加值。
我正在开发注册表应用程序。现在我正在尝试想出一种动态创建表单的方法。现在我有一个带有硬编码问题的硬编码表单,它将表单数据保存到 .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"] 不硬编码?
非常感谢您的帮助!
正确创建动态表单的一种(但不是唯一)方法是使用典型的块(例如开关块、文本字段块等)构建它。您可以添加这些块以手动查看或使用 UITableView 等。您还需要描述具体形式的数据结构(块的数量和类型)。
格式化文件没问题,因为您总是可以使用 NSMutableString 并一一附加值。