まずは状況説明から。私は webservice と webApplication で動作する IOS アプリを作成しています。次の例を見てください。
会社 X があるとします。会社 X は Web アプリケーションであらゆる種類のフォームを作成できます (Callback フォーム、meetingRequest フォーム、vacationRequestForm など)。雇用主はアプリケーションを開いて、テーブルビューでこれらのフォームのすべてのタイトルを確認します。タイトルをクリックすると、次の画面に移動し、フォーム全体が表示され、入力を開始できます。
ここでの難点は、各企業が独自のフォームを作成できることです。したがって、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:"}
]
}
]
}
2 つのフィールドにバインド オプションがあることがわかります。プロジェクトには 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 から取得したプロパティで埋められる必要があるためです。どうすればそれができるのかわかりません。
誰かが私を助けてくれることを願っています!さらに説明が必要な場合は、お気軽にお問い合わせください。
よろしくお願いいたします。