可能是一个菜鸟问题,但在这里。我让我的AppDelegate从"应用程序didFinishLaunchingWithOptions"中的文件中实例化一个新字典。我有一个addViewController,我想传递一个新对象添加到AppDelegate的字典中,以便以后保存到磁盘。这是我所得到的一些片段。
//
// 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的所有方法。
谢谢大家。
答案 0 :(得分:4)
AppDelegate是一个类。您可能想要与作为应用程序委托的类的特定实例进行对话,该实例将是[[UIApplication sharedApplication] delegate]
。一个类与其实例不可互换。
答案 1 :(得分:3)
该行:
[AppDelegate addtoDict:newperson];
正在尝试在名为addtoDict:
的类上调用名为AppDelegate
的类方法。您很可能想要在应用的应用委托实例上调用addtoDict:
实例方法(而不是类方法)。
你可能想要:
[(AppDelegate *)[NSApplication sharedApplication].delegate addtoDict:newperson];