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