1

php / mysql/POST関数を使用してユーザーが許可されているかどうかを確認するログインビューコントローラーがあります。承認されると、彼らはアプリケーションに入ります。

私の質問は、彼らがアプリケーションに参加したら、どのようにユーザー名を「取得」し、それを使用して、ユーザーがアプリに参加している間にデータベースにアップロードするデータに追加するのですか?

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

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

編集:このユーザー名を取得したい場所は次のとおりです:

-(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]];
4

2 に答える 2

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"];

この設計により柔軟性が向上するため、アプリ内のすべてのViewControllerでユーザー名を使用できると思います。

再編集後

この関数のどこかで文字列をフォーマットできないのはなぜですか?正確な投稿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]];

}
于 2012-05-01T18:02:23.217 に答える
1

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

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

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

于 2012-05-01T20:46:35.100 に答える