1

おそらく初心者の問題ですが、ここにあります。「アプリケーションdidFinishLaunchingWithOptions」のファイルから新しい辞書をインスタンス化するAppDelegateを持っています。後でディスクに保存するために、AppDelegate の辞書に追加する新しいオブジェクトを渡したい addViewController があります。これが私が持っているものの一部です。

//
//  AppDelegate.m
//  PersonLibraryiOS
//
//  Created by Joey on 11/7/12.
//  Copyright (c) 2012 Joey. All rights reserved.
//

#import "AppDelegate.h"
#import "AddViewController.h"
#import "Person.h"
@implementation AppDelegate
@synthesize PersonDict;

-(void)addtoDict:(Person *)newPerson
{
    [PersonDict setObject:@"newPerson" forKey:[newPerson name]];
}



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
    PersonDict = [NSMutableDictionary dictionaryWithContentsOfFile:@"diskDict"];

および AddViewController:

//
//  AddViewController.m
//  personLibraryiOS
//
//  Created by Joey on 11/8/12.
//  Copyright (c) 2012 Joey. All rights reserved.
//

#import "AddViewController.h"
#import "TableViewController.h"
#import "person.h"
#import "AppDelegate.h"

@implementation AddViewController
@synthesize nameLabel;
@synthesize ageLabel;
@synthesize heightLabel;
@synthesize weightLabel;
@synthesize hairColorLabel;
@synthesize eyeColorLabel;


- (IBAction)saveButton:(id)sender
{
    person *newperson = [[person alloc]init];

    newperson.name = [nameLabel text];
    newperson.age = [ageLabel text];
    newperson.height = [heightLabel text];
    newperson.weight = [weightLabel text];
    newperson.hairColor = [hairColorLabel text];
    newperson.eyeColor = [eyeColorLabel text];



    [AppDelegate addtoDict:newperson];  <---- the error is here

     }

これはおそらく基本的なことだと思いますが、本当に混乱しています。addViewController に AppDelegate.h ファイルをインポートしているので、AppDelegate のメソッドをすべて認識している必要があります。

みんな、ありがとう。

4

2 に答える 2

4

AppDelegate はクラスです。おそらく、アプリケーション デリゲートとして機能しているクラスの特定のインスタンス ( [[UIApplication sharedApplication] delegate]. クラスはそのインスタンスと交換できません。

于 2012-11-11T18:34:45.880 に答える
3

この線:

[AppDelegate addtoDict:newperson];

addtoDict:という名前のクラスで という名前のクラス メソッドを呼び出そうとしていますAppDelegateaddtoDict:ほとんどの場合、アプリのアプリ デリゲート インスタンスで (クラス メソッドではなく) インスタンス メソッドを呼び出します。

あなたはおそらく欲しい:

[(AppDelegate *)[NSApplication sharedApplication].delegate addtoDict:newperson];
于 2012-11-11T18:34:56.200 に答える