0

私はParseを使用しており、データ ブラウザから "usernames" というタイトルのクラスを取得しています。クラス内のすべてのオブジェクトを取得し、それらを配列に格納します。次に、ユーザーがログインできるように、配列でユーザー名を検索します。パスワードも同じようにします。これが私のコードです:

- (IBAction)login:(id)sender
{
if ([usernameLogin.stringValue isEqualTo:@""] || [passwordLogin.stringValue isEqualTo:@""]) {
    NSBeginAlertSheet(@"Error", @"OK", nil, nil, self.window, self, @selector(sheetDidEnd:resultCode:contextInfo:), NULL, NULL, @"Please fill in all fields.");
}

/* retrieve user from parse db */
PFQuery *usernameQuery = [PFQuery queryWithClassName:@"usernames"];
[usernameQuery findObjectsInBackgroundWithBlock:^(NSArray *usernames, NSError *error) {

    NSString *userString = [NSString stringWithFormat:@"%@", usernameLogin.stringValue];
    NSLog(@"USERS:\n %@", usernames);

    int i;
    for (i = 0; i < [usernames count]; i++) {
        NSString *userFind = [usernames objectAtIndex:i];
        if ([userString isEqualToString:userFind]) {
            NSLog(@"FOUND!!!");
        }
    }

    /*
    if ([usernames indexOfObject:usernameLogin.stringValue]) {
        NSLog(@"User: '%@' was found successfully!", usernameLogin.stringValue);

    } else {
        NSLog(@"User: '%@' doesn't exist in database, or password was incorrect!", usernameLogin.stringValue);
    }
    */
}];

gameCont = [[CSGameController alloc] initWithWindowNibName:@"CSGameController"];
[gameCont showWindow:self];
[gameCont.window makeKeyAndOrderFront:nil];
_window.isVisible = false;
}

誰かが私が間違っていることを説明できますか? 入力したユーザーが存在するかどうかを確認するためにデータベースを検索しています。テスト ユーザーをセットアップしましたが、まだ存在しないと表示されます。本当にありがとう!追加した:

        int i;
    for (i = 0; i < [usernames count]; i++) {
        NSString *userFind = [usernames objectAtIndex:i];
        NSLog(@"UserFind class = %@, value = %@", [userFind class], userFind);
    }

出力:

[2438:303] UserFind class = PFObject, value = <usernames:kx7aG2xfkX:(null)> {
username = ryan;

}

4

3 に答える 3

3

ここで意味のないことをたくさんしようとしているようです。Parse iOS ガイドを読むことを検討してください。すべての PFQuery は PFObject を返します。PFObjects は多くの点で NSDictionaries に似ています。それらはデータベース内の単一のレコードであり、フェッチまたは保存できます。PFQuery は、常に 1 つ以上の PFObject を返します。PFQuery の結果は、ほとんどの場合、すぐに役立つようにスコープ可能である必要があります。この例では、equals 条件は -[PFQuery whereKey:equalTo:] で表現できます。多いですParse に検索を任せた方が速いです。これにより、PFQueryTableViewController を介してクエリの結果を利用した UI を作成することもできます。最後に、ログイン コードを自分で作成しないでください。現在のコードは簡単にハッキングされて、誰でも誰でもログインできるようになるだけでなく、誰のパスワードも知ることができます。ユーザー アカウントには組み込みの PFUser クラスを使用します。安全なログイン、資格情報のオフライン キャッシュ、パスワードのリセット、電子メールの検証を処理し、ユーザーがユーザー名/パスワードに加えて Facebook または twitter アカウントでログインできるようにします。Parse には、ログインしてアカウントを作成するためのビュー コントローラーが組み込まれています。 PFUsers。PFUsers は、データを保護する方法でもあります。PFACL は、どの PFUsers がデータを読み書きできるかを決定できるアクセス制御リストです。

于 2013-03-08T17:38:11.540 に答える
0

問題が解決しました:ParseのUserクラスを使用しました。私が自分のクラスでここでやろうとしていたように、それらにはユーザーを登録するための既存のメソッドがあります。登録方法は次のとおりです。

    PFUser *user = [PFUser user];
    user.email    = emailField.stringValue;
    user.username = usernameField.stringValue;
    user.password = passwordField.stringValue;
    [user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
于 2013-03-10T03:12:20.553 に答える