0

让我首先解释一下情况。我正在制作一个与 web 服务和 web 应用程序一起使用的 IOS 应用程序。举个例子。

假设我们有 X 公司。X 公司可以使用 web 应用程序制作各种表格(回调表格、会议请求表格、假期请求表格......)然后雇主将打开他们的应用程序并在表格视图中查看这些表格的所有标题。当他们点击一个标题时,他们会转到下一个屏幕并查看整个表单并开始填写它。

这里的困难是每个公司都可以创建自己的表格。所以X公司可能除了Y公司还有其他类型的表格。经过大量研究,我发现了QuickDialog这个神奇的库。你可以在这里找到它。绝对值得一试!

问题 好的,现在是问题。一旦用户填写表格,数据应该被发送回服务器。为此,我正在使用控制器类和 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 中返回的属性。我不知道我该怎么做。

我希望有人能帮助我!如果您需要更多解释,请随时询问!

亲切的问候和非常感谢提前!

4

1 回答 1

2

fetchValueUsingBindingIntoObjects:需要一个“id”,这意味着几乎任何支持 KVC 的对象都会这样做:

NSMutableDictionary *dict = [NSMutableDictionary new];
[self.root fetchValueUsingBindingsIntoObject:dict];

通过这种方式,您可以获取有关任何表单的数据,并使用它将其发送回网络。

于 2012-11-14T14:31:37.770 回答