我有一个用户类,我通过iPhone应用程序使用,这是从我的用户类(SUBBLASS OF NSobject)的init和initWithUser函数,当我使用initWithUser函数时,我得到警告在代码后面描述。请指教。不兼容Objective-c类型警告
// serialize.h
#import <Foundation/Foundation.h>
@protocol Serialize
// serialize the object to an xml string
-(NSString*)ToXML;
@end
// user.h
#import <Foundation/Foundation.h>
#import "Serialize.h"
#import "Contact.h"
@interface User : NSObject <Serialize> {
NSString *email;
NSString *firstName;
NSString *lastName;
NSString *userId;
NSString *userName;
NSString *password;
NSMutableArray *contactList;
}
@property (nonatomic,copy) NSString *email;
@property (nonatomic,copy) NSString *firstName;
@property (nonatomic,copy) NSString *lastName;
@property (nonatomic,copy) NSString *userId;
@property (nonatomic,copy) NSString *userName;
@property (nonatomic,copy) NSString *password;
@property (nonatomic, retain) NSMutableArray *contactList;
//-(id)init;
-(id)initWithUser:(User *)copyUser;
@end
// user.m
#import "user.h"
@implementation User
@synthesize email;
@synthesize firstName;
@synthesize lastName;
@synthesize userId;
@synthesize userName;
@synthesize password;
@synthesize contactList;
-(id)init
{
// call init in parent and assign to self
if((self = [super init]))
{
// do something specific
contactList = [[NSMutableArray alloc] init];
}
return self;
}
-(id)initWithUser:(User *)copyUser
{
if((self = [self init])) {
email = copyUser.email;
firstName = copyUser.firstName;
lastName = copyUser.lastName;
userId = copyUser.userId;
userName = copyUser.userName;
password = copyUser.password;
// release contactList initialized in the init
[contactList release];
contactList = [copyUser.contactList mutableCopy];
}
return self;
}
- (void)dealloc
{
// TODO:
[contactList removeAllObjects];
[contactList release];
[super dealloc];
}
// implementation of serialize protocol
-(NSString*)ToXML
{
return @"";
}
我用它在主控制器这样
- (void) registerNewUser {
RegistrationViewController *regController = [[RegistrationViewController alloc] init] ;
regController.newUser = [[User alloc] initWithUser:self.user];
[self.navigationController pushViewController:regController animated:YES];
[regController release];
}
行
regController.newUser = [[User alloc] initWithUser:self.user];
给我下面的错误,它是推动我坚果几天的:
不兼容Objective-c类型的结构User *',e xpected“结构的NSString *”路过时的参数1“initWithUser:”从不同的Objective-C型
任何帮助和指导表示赞赏
嗯。你可以发布'User.h'文件吗? – Yuji 2010-09-19 03:24:19
'Serialize'是什么样的?你有什么奇怪的“NSObject”类别?任何可能涉及的'#define'? – 2010-09-19 03:37:36
我说上面的序列化的代码,没有的#define或类似的东西 – curiousMo 2010-09-19 03:56:40