0

我收到以下错误:

on the line self = [super init];

无法在方法初始化系列之外分配自我

在所有 self.whatever = 上也有黄色三角形;

“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;
}
4

2 回答 2

2

你已经合成了@synthesize firstName, lastName, emailAdress, password, admin;

在您的方法中,您使用的是相同的名称

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

如果您的编译器支持自动合成,请将这些更改为其他内容或删除合成

-(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;
}
于 2013-04-24T14:08:31.413 回答
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;
}

作为奖励点,我还想指出您不使用/设置课程:)

于 2013-04-24T14:18:30.350 回答