-3

アプリのログインと登録を作成しています。このコードを実行するたびに、次のエラーが表示されます。

#import <UIKit/UIKit.h>

#import "THRAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([THRAppDelegate class]));
    }
}

誰かがそれが何を意味するのか教えてもらえますか? サーバー側(PHP)から発生していると思います

また、取得し続ける JSON 応答はエラーです: False

phpコードは次のとおりです。

function registerUser($email, $name, $username, $password){

    $uuid               = uniqid('', true);
    $hash               = hashSSHA($password);
    $encrypted_password = $hash["encrypted"]; //encrypted password
    $salt               = $hash["salt"]; //salt password


$register = query("SELECT email FROM users WHERE email='$email' limit 1");  

    if (count($register['result'])>0) {

        errorJson('This email is already registered. Try to login or recover your password.');
    }



    //try to register the user

$result  = query("INSERT INTO users(unique_id, name, email, username, encrypted_password, salt) VALUES('$uuid', '$name', '$email','$username', '$encrypted_password', '$salt', NOW())");    
    if (!$result['error']) {
        //success
        login($email, $password);

    } else {
        //error
        //errorJson('Sorry, something went wrong :( . Please try again later.');
        errorJson(mysql_error());
    }

}

function login($email, $password){

    $result = query("SELECT uid, email FROM users WHERE email ='%s' AND password ='%s' limit 1", $email, $password);

    if (count($result['result'])>0) {


            $salt               = $result['salt'];
            $encrypted_password = $result['encrypted_password'];
            $hash               = checkhashSSHA($salt, $password);

            //checking for password equality
            if ($encrypted_password == $hash) {
                //user authentication details are correct
                return $result;
                //authorized
                $_SESSION['uid'] = $result['result'][0]['uid'];

                print json_encode($result);
            }

    } else {
        //not authorized
        errorJson('Wrong Email and password combination.');
    }

}

function hashSSHA($password){

        $salt = sha1(rand());
        $salt = substr($salt, 0,10);
        $encrypted = base64_encode(sha1($password . $salt, true) . $salt);
        $hash = array("salt" => $salt, "encrypted" => $encrypted);
        return $hash;
    }

/*
    *Decrypting password
    *#param salt. pasword
    returns hash string
    */
function checkhashSSHA($salt, $password){

        $hash = base64_encode(sha1($password.$salt, true) . $salt);
        return $hash;
    }

Xcode エラー

2012-10-11 15:04:42.528 Thryfting[1457:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFBoolean isEqualToString:]: unrecognized selector sent to instance 0x1883964'
*** First throw call stack:
(0x1752012 0x1577e7e 0x17dd4bd 0x1741bbc 0x174194e 0x6184af 0x618674 0x8b0706 0x8be578 0x8beb50 0x1b5fb 0x1ce4c 0x1e6fb 0xed99 0x1f0753f 0x1f19014 0x1f097d5 0x16f8af5 0x16f7f44 0x16f7e1b 0x2c827e3 0x2c82668 0x4bf65c 0x2bad 0x2ad5 0x1)
libc++abi.dylib: terminate called throwing an exception
4

2 に答える 2

0

だから、私が見る限り、あなたのエラーは

[__NSCFBoolean isEqualToString:]: unrecognized selector....

これは、コードのどこかで(提供しないため、どこにあるかわからない)、NSStringではないオブジェクトにisEqualToStringメッセージを送信していることを意味します。

簡単に検索して、そのメッセージをどこに送信しているかを確認してください。ブール値を読み取っているが、それをNSStringとして扱っている可能性があります。メッセージを送信する前に、コードを確認し、データの種類を確認してください。

それが発生する可能性のあるコードを提供してください。

于 2012-10-11T21:06:47.803 に答える
0

ゾンビ オブジェクトでコードをトレースできます。

⌥</kbd>⌘</kbd>R

[診断] タブを選択し、[ゾンビ オブジェクトを有効にする] をクリックします。

クリック

これにより、解放されたオブジェクトが NSZombie インスタンスになり、再使用時にコンソール警告が出力されます。これは、メモリ使用量を増やす (実際にはオブジェクトが解放されない) デバッグ支援ですが、エラー報告を改善します。

典型的なケースは、オブジェクトを過剰に解放し、どれがどれかわからない場合です:

  • ゾンビの場合:-[UITextView release]: message sent to deallocated instance
  • ゾンビなし:EXC_BAD_ACCESS

于 2012-10-11T19:05:25.747 に答える