首先让我先解释一下情况。我正在制作一个使用webservice和webApplication的IOS应用程序。以下面的例子为例。
假设我们有公司X.公司X可以使用webapplication制作各种形式(回调表单,meetingRequest表单,vacationRequestForm,...)然后,雇主将打开他们的应用程序并查看这些表单的所有标题。实现代码如下。当他们点击标题时,他们会转到下一个屏幕并看到整个表格并开始填写。
这里的困难在于每家公司都可以创建自己的表格。所以公司X可能有比Y公司更多的形式。经过大量的研究,我找到了惊人的QuickDialog库。您可以在here上找到它。绝对值得一试!
问题 好的,现在问题。当用户填写表格时,应将数据发送回服务器。为此,我正在使用控制器类和NSObject类。理解的最佳方式是查看登录示例。首先,这是登录的json。
{
"grouped": true,
"title": "Login Form",
"controllerName": "LoginController",
"sections": [
{ "title":"login", "elements": [
{ "type":"QEntryElement", "title":"Login","placeholder":"Login or email", "bind":"textValue:login", "key":"login"},
{ "type":"QEntryElement", "title":"Password", "placeholder":"Password", "secureTextEntry":true, "bind":"textValue:password" }
]
},
{ "elements":[
{ "type":"QButtonElement", "key":"button", "title":"Login", "controllerAction":"onLogin:"}
]
}
]
}
您可以看到这两个字段都有绑定选项。该项目包含一个NSObject类(loginInfo)在这个类中,这些字段被添加为NSStrings。
@interface LoginInfo : NSObject {
@private
NSString *_password;
NSString *_login;
}
@property(strong) NSString *login;
@property(strong) NSString *password;
@end
接下来是一个控制器类。在此控制器类中,您说当按下按钮时,您将从文本字段中获取值到此loginInfo类中。这是通过以下方式完成的。
- (void)onLogin:(QButtonElement *)buttonElement {
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
[self loading:YES];
LoginInfo *info = [[LoginInfo alloc] init];
[self.root fetchValueUsingBindingsIntoObject:info];
[self performSelector:@selector(loginCompleted:) withObject:info afterDelay:2];
}
- (void)loginCompleted:(LoginInfo *)info {
[self loading:NO];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome" message:[NSString stringWithFormat: @"Hi %@, I hope you're loving QuickDialog! Here's your pass: %@", info.login, info.password] delegate:self cancelButtonTitle:@"YES!" otherButtonTitles:nil];
[alert show];
}
好的,我知道这有很多信息。但我只想要解释一下我的问题。我认为控制器类不是我的问题,但是NSObject类是。我希望这是通用的。因为这应该填充从json返回的属性。我不知道怎么做。
我希望有人可以帮助我!如果您需要更多解释,请随时提出!
亲切的问候,并提前多多感谢!
答案 0 :(得分:2)
fetchValueUsingBindingIntoObjects:
采用“id”,这意味着支持KVC的任何对象都会这样做:
NSMutableDictionary *dict = [NSMutableDictionary new];
[self.root fetchValueUsingBindingsIntoObject:dict];
通过这种方式,您可以获取有关任何表单的数据,并使用它将其发送回网络。