0

以下は、同じことをずっと行うメソッドの始まりです。ただし、エラーが発生します: NSManagedObject クラス 'Car' で指定された初期化子を呼び出すことができませんでした

私は何を間違っていますか、ありがとう。

- (Car*) initWithJSONData:(NSDictionary *)responseData {
    BOOL isActive;
    self = [super init];

    Car*coreDataCar =(Car*)[NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:[self managedObjectContext]];
    //Check if car is active or deactive.
    if (![responseData valueForKeyIsNull:@"Car Status"]) {
        int carStatus = [[responseData valueForKey:@"Car Status"] intValue];
        if (carStatus == 1 ) {//active
            isActive=YES;
        }else if( carStatus == 2 ){
            isActive = NO;
        }
    }


    if (![responseData valueForKeyIsNull:@"Name"]) {
        [coreDataCar setValue:[responseData valueForKey:@"Name"] forKey:@"name"];
    }
    NSLog(@"user count = %@",[responseData valueForKey:@"UserCount"]);//Sometimes it crashes here, others it doesnt
    if (![responseData valueForKeyIsNull:@"UserCount"]) {
        //[responseData valueForKey:@"UserCount"];
        [coreDataCar setValue:[responseData valueForKey:@"UserCount"] forKey:@"userCount"];
    }
4

1 に答える 1

1

これは、それが不平を言っている呼び出しです:

 self = [super init];

後でこれを行います:

Car*coreDataCar =(Car*)[NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:[self managedObjectContext]];

これらの呼び出しの両方を取り除き、次のようなものに置き換える必要があります。

- (id) initWithJSONData:(NSDictionary *)responseData
 inManagedObjectContext:(NSManagedObjectContext *) moc {

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Car"
                                              inManagedObjectContext:moc];
    if (self = [super initWithEntity:entity insertIntoManagedObjectContext:moc]) {

        ...

    }
    return self;
}

また、init メソッドの戻り値の型は慣習的に であることに注意してくださいid

于 2013-01-05T04:16:45.403 に答える