1

サーバーからほとんどすべてのデータをフェッチするWebベースのアプリケーションがあります。ログインビューで、いくつかのユーザー情報を入力し、サーバーへのGETリクエストを作成します(これらのことはと呼ばれるメソッドで行いますloginMethod)。入力した値がデータベース内の値と一致する場合は、詳細データを返し、ユーザー情報を保存しNSUserDefaultsてプッシュします。新しいビューコントローラー(私のメインビュー)。ここまでは何でも構いませんが、デフォルトにデータがない場合(つまり、初めての場合)、AppDelegateクラスにコントロールを追加したいのですが、保存されたデータがある場合は、ログインビューコントローラーを表示したいです。メインメニューを表示します。私はいくつかの方法を試しましたが、いつも失敗しました。これが私のコードです:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
//uName, serve1r and pasword are my user defaults
        NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
         uName   = [defaults objectForKey:@"kUsername1"];
         serve1r = [defaults objectForKey:@"kServer1"];
         pasword = [defaults objectForKey:@"kPassword1"];
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
        if([uName isEqualToString:@""]){
            //BNT_DetailViewController is my login class
         detailViewController1 = [[[BNT_DetailViewController alloc] initWithNibName:@"BNT_DetailViewController" bundle:nil] autorelease];
            navigationController = [[[UINavigationController alloc] initWithRootViewController:detailViewController1] autorelease];
            self.window.rootViewController = self.navigationController;
            [self.window makeKeyAndVisible];
            application.applicationIconBadgeNumber=0;}
        else{
            //controller is an instance of MainMenu class
            controller = [[[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil] autorelease];
            navigationController = [[[UINavigationController alloc] initWithRootViewController:controller] autorelease];
            self.window.rootViewController = self.navigationController;
            [self.window makeKeyAndVisible];
            application.applicationIconBadgeNumber=0;
        }
        return YES;
    }

編集クラッシュしませんが、黒い画面が表示されます。値の保存に問題はありません

4

1 に答える 1

-1

値が存在しない場合、メソッド objectForKey は nil を返し、空のストリグナではないと見なし、最初の条件をチェックしないと仮定します。

于 2012-04-09T13:15:53.500 に答える