2012-05-01 8 views
1

私は、ユーザーが承認されているかどうかを確認するためにphp/mysql/POST関数を使用するログインビューコントローラを持っています。承認されると、アプリケーションに入ります。Cocoa Touchでユーザー名を扱うには?

私の質問は、アプリケーションにいったん登録すると、自分のユーザー名を取得し、自分のアプリケーションにデータベースにアップロードしているデータに追加するにはどうすればいいですか?

アップロードするテキストブロックを含む現在のNSMutableData文字列に追加すると仮定していますが、このユーザー名を追加するにはどうすればよいでしょうか?

「ログイン」と「メイン」の2つのビューコントローラがあり、コンテンツが「メイン」にアップロードされていると仮定して、「ログイン」ビューから「メイン」ビューにユーザー名を渡すにはどうすればよいですか?ユーザーがアップロードボタン(メインビューにある)を押すと追加できますか?

編集:私はこのユーザ名を取得したい以下である:

-(IBAction)uploadImage:(id)sender { 
NSLog(@"uploadImage"); 



//and for retrieval 





NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *authenticatedUsersName = [defaults objectForKey:@"username"]; 


NSMutableString *postString = [NSMutableString stringWithString:kPostURL]; 



[postString appendString:[NSString stringWithFormat:@"&%@=%@", kText, textField.text]]; 



[postString setString:[postString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

答えて

1

ユーザー名のセキュリティを懸念していない場合は、なぜあなたは認証が成功するとNSUserDefaultsでユーザ名を格納しませんか?あなたは

//upon authentication... 

NSUserDefault *defaults = [NSUserDefaults standardUserDefaults]; 
if ([defaults objectForKey:@"username"] == nil) //we haven't saved anything yet 
    [defaults setObject:authenticatedUsersName forKey:@"username"]; 

[defaults synchronize]; //saves the new defaults 

//and for retrieval 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *authenticatedUsersName = [defaults objectForKey:@"username"]; 

私はアプリ内のすべてのビューコントローラ間でのユーザー名を使用することができますので、この設計はあなたに多くの柔軟性を与えると思います....このような何かを行うことができます。

後の再編集

は、なぜあなたはどこか、この関数で文字列をフォーマットすることはできませんか?正確な投稿のURL形式は何ですか?

-(IBAction)uploadImage:(id)sender { 
    NSLog(@"uploadImage"); 

    //and for retrieval  

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *authenticatedUsersName = [defaults objectForKey:@"username"]; 

    //MY CHANGES, CAN YOU DO EITHER OF THESE? 

    NSMutableString *postString = [NSMutableString stringWithString:[NSString stringWithFormat:@"%@-%@", kPostURL, authenticatedUsersName]; 

    [postString appendString:[NSString stringWithFormat:@"&%@=%@&%@", kText, textField.text, authenticatedUsersName]]; 

    [postString setString:[postString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

} 
+0

私がこの今夜しようとしますし、私は成功した私の現在のコードにこれを適応/挿入することができていますかどうかを知るようになります。直感的で、素早く反応してくれてありがとう!それがうまくいけば、私はここにコメントしてチェックマークをクリックすることによって、私がどれほど感謝しているかを伝えます。そうでなければ、私はいくつかの簡単なフォローアップ項目を持っていることがありますそれをすべて一緒に正常に縫う....: – Mike

+0

ハは、これまでのところ私が今までに得た最も丁寧なコメントでした。 iOS開発へようこそ、歓迎して幸せ、あなたがそれを愛することを願って: - D。 – Convolution

+0

こんにちは畳み込み。だから、私はほとんどそれを持っていると思うが、私は少しの問題にぶち当たっている。ユーザー名を「取得」する必要のある場所は、「uploadImage」というIBAction内にあります。これにはNSMutableStringが含まれています。これを使用して、SQLストア用の.phpファイルに他の変数を渡します。 authenticatedUsersNameも渡す必要がありますが、NSMutableStringの内部にNSStringを追加することはできません。私は上記の "username"をどこに追加するかを反映するために上記の質問を更新しました。助けてもらえますか? – Mike

1

グローバルに使用可能な変数を使用する別の方法は、シングルトンクラスを使用することです。

これは、NSUserDefaultsを使用したConvolutionのソリューションよりも少し難しいですが、いくつかのユースケースに適しています。

次の場所に良いチュートリアルがあります: http://www.galloway.me.uk/tutorials/singleton-classes/

関連する問題