我收到以下错误:
on the line self = [super init];
无法分配自我外部方法init系列
也会在所有self.whatever = what;
上获得黄色三角形“what”的本地声明隐藏实例变量
@synthesize firstName, lastName, emailAdress, password, admin;
//current course funkade med nil men inte @"" vrf ;P
-(id) init
{
return [self initwithName:@"" lastName:@"" password:@"" admin:@"" currentCourse:nil];
}
-(id) initwithName:(NSString *) firstName
lastName:(NSString *) lastName
password:(NSString *) password
admin:(NSString *) admin
currentCourse:(NSDictionary *) course
{
self = [super init];
if (self) {
self.firstName = firstName;
self.lastName = lastName;
self.password = password;
self.admin = admin;
}
return self;
}
答案 0 :(得分:2)
您已合成@synthesize firstName, lastName, emailAdress, password, admin;
在您的方法中,您使用相同的名称
-(id) initwithName:(NSString *) firstName
lastName:(NSString *) lastName
password:(NSString *) password
admin:(NSString *) admin
currentCourse:(NSDictionary *) course
如果您的编译器支持自动合成
,请将这些更改为其他内容或删除synthesize-(id) initWithName:(NSString *) aFirstName
lastName:(NSString *) aLastName
password:(NSString *) aPassword
admin:(NSString *) aAdmin
currentCourse:(NSDictionary *) aCourse
{
self = [super init];
if (self) {
self.firstName = aFirstName;
self.lastName = aLastName;
self.password = aPassword;
self.admin = aAdmin;
}
return self;
}
答案 1 :(得分:1)
Anoop已经确定了属性内容,但您的第一个问题仍未得到答复。
我的第一篇文章是 “ 我认为你不能分配给self的原因是你的init方法签名不正确。
我不是100%肯定这一点,但我认为对于X的实现,init应该返回(X *) “ 这是假的 - (id)init;是完全有效的。
错误信息对于以下内容感觉不完全准确,但在您的问题中,在 - (id)init中,您调用[self initWith ....],但此时,self尚未设置。如果你想编写一次该代码,你将不得不重构,但更好的解决方案,恕我直言,
- (id) init {
self = [super init];
if ( self) {
self.firstName = @"";
self.lastName = @"";
self.password = @"";
self.admin = @"";
}
return self;
}
对于奖励积分,我还想指出你不使用/设定课程:)