2013-04-24 65 views
0

即时得到以下错误:初始化超级init和其他

on the line self = [super init]; 

不能分配方法的init家庭以外的自

还对所有self.whatever获得黄色三角形=什么;的

局部声明“任何”隐藏的实例变量

@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; 
} 
+2

更改'initwithName'为'initWithName',大写W – tkanzakic 2013-04-24 14:08:38

+0

工作,geez有时我的阅读障碍是真正得到我最好的:P非常感谢! – 2013-04-24 14:13:13

+2

很高兴它可以帮助你,此外你应该避免使用self.whatever init方法,看看这个更多细节http://stackoverflow.com/a/5932733/1411844 – tkanzakic 2013-04-24 14:16:20

回答

2

你使用的是相同的名称

-(id) initwithName:(NSString *) firstName 
      lastName:(NSString *) lastName 
      password:(NSString *) password 
      admin:(NSString *) admin 
    currentCourse:(NSDictionary *) course 

更改这些别的东西或合成@synthesize firstName, lastName, emailAdress, password, admin;

而在你的方法如果您的编译器支持自动合成,请移除合成器

-(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; 
} 
+0

当我这样做时,我得到错误 使用未声明的标识符你的意思是“不管” 感谢您的快速回复! – 2013-04-24 14:11:20

+4

或者你可以@synthesize firstName = _firstname; etc – Tim 2013-04-24 14:11:38

+0

@nalydbob你的代码应该这样, – 2013-04-24 14:12:45

1

Anoop已经钉住了属性的东西,但你的第一个问题仍然没有得到答复。

我的第一个职位是 “ 我认为你不能分配给自己的理由是,你的方法签名init的是不正确的。

我不是100%肯定这一点,但我认为对于X的实现,init应该返回(X *) “ 这是假 - (id)初始化;是完全有效的。

错误消息对于以下内容感觉不完全准确,但在你的问题之中是在 - (id)init中,你调用[self initWith ....],但是在这一点上,自我还没有组。如果你想编写一次代码,你必须重构,但更好的解决方案,恕我直言,是

- (id) init { 
    self = [super init]; 
    if (self) { 
     self.firstName = @""; 
     self.lastName = @""; 
     self.password = @""; 
     self.admin = @""; 
    } 
    return self; 
} 

对于加分,我也想指出的是您不使用/设置当然:)

+0

self is X本身。 – 2013-04-24 14:21:59

+0

@anoop,我知道这一点,我想解释第一个错误,但支持更新的答案,因为我现在看到的问题:) – 2013-04-26 00:09:33

+0

是的,我想这也是作品:) – 2013-04-30 23:50:38