私はノートにコメントするのに十分なスペースがありませんでした。ここに最終的なコードがあります。私はそれが仕事を得る望まないものをにもかかわらず:
JSONValueは、私がここに見られるようなJSON frameowrkをダウンロードして、私のプロジェクトに含める必要があった仕事を得るために:
https://github.com/stig/json-framework
私がしたらその場所でJSONValue関数から不完全なエラーが発生していました。
{ "成功": "0"、 「アカウントID: "4"、 "エラー": "" }
を次のように私のPHPのページ要求はJSONレスポンスを提供していたと私の元のURL要求JSONValue機能はこの出力を好きではなかったと私は次のように、より基本的なあまり好ましくないバージョンにそれを変更しなければならなかったいくつかの理由
:一度
[「0」、「4」、「」]
私はこのコードの最終コピーを次のように働いていた:
アプリの起動にかかる負荷は、私は、既存のアカウントIDがあったかどうかを判断し、それが存在していなかった場合は、「ログイン」ビューを起動するには、以下を追加したことを私のメインビューで:
- (void)viewDidLoad
{
NSString *accountID = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccountID"];
if (![accountID length]) {
UIViewController *login = [self.storyboard instantiateViewControllerWithIdentifier:@"Login"];
[self presentModalViewController:login animated:YES];
}
[super viewDidLoad];
}
ログインは何もありません2つ以上のテキストフィールドと認証のためのボタン。 これは私がボタンに追加された機能であり、それが現在動作します:
-(IBAction)authenticate:(id)sender{
// This will be the validation code
// First we'll grab the field values
NSString *currentEmail = emailField.text;
NSString *currentPassword = passField.text;
// Now we will grab the user default settings (saved preferences)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// build the request to update status
NSString *myURL = [NSString stringWithFormat:@"http://www.myurl.com/auth.php?e=%@&p=%@",currentEmail,currentPassword];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:[NSURL URLWithString:myURL]];
[request setHTTPMethod:@"GET"];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *responseString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding];
NSArray *responseArray = [responseString JSONValue];
NSString *success = [responseArray objectAtIndex:0];
NSString *AccountID = [responseArray objectAtIndex:1];
NSString *error = [responseArray objectAtIndex:2];
if([success boolValue]) {
NSLog(@"User is Authenticated");
UIAlertView *auth1 = [[UIAlertView alloc] initWithTitle:@"T-of-U" message:@"Successfully Authenticated" delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];
[auth1 show];
[defaults setObject:AccountID forKey:@"AccountID"];
[self dismissModalViewControllerAnimated:YES];
} else {
NSString *authMessage = error;
UIAlertView *auth2 = [[UIAlertView alloc] initWithTitle:@"Authentication Failed:" message:authMessage delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];
[auth2 show];
}
}
私はキーと値のペアNSDictionaryのを好まれているだろうが、私は、キーと値のペアを持つJSONレスポンスを送信されるすべての時間は、JSONValueはそうできませんでした私は変数を得るために単純なjsonレスポンスと配列オブジェクトを参照オブジェクトにするだけでした。
私はjson応答を正しく形成していないかもしれませんが、キー値のペアを辞書に入れる方法があれば(PHPは期待通りにjson_encode($ data)メソッドを持っていますがObjective C関数は解析しません)。
優れています。これらのスニペットを私のAppDeletageに統合して、それがどうなるかを見てみましょう。私はあなたに知らせるために返信します。 – Silvertiger
私はもう少しお尋ねする必要があると思っています。私は彼のアイデアを得るが、基本起動(タブ付きアプリケーション)をオーバーライドする機能を持たず、代わりにコードで私の認証UIviewを起動し、ストーリーボードに組み込まれたタブ付きアプリを起動しますか? – Silvertiger
アプリが私に与える最初の苦情として注目に値するのは、 "JSONValue"のメソッドがないということです。これを別のインポートに含める必要がありますか? – Silvertiger