Как реализовать первичный ключ в базовых данных для Iphone - PullRequest
1 голос
/ 26 марта 2011

Я работаю с Core Data. Мне нужно сохранить уникальное значение bandID в Core Data. В моей модели данных у меня

bandImagePath
bandID ---------------primary Key
bandName

Код:

-(IBAction)addToFavButtonPressed:(id)sender
{   
    NSLog(@"add to fav button clicked");    
    SongRequestAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
    NSManagedObjectContext *context = [appDelegate managedObjectContext];   
    NSManagedObject *addToFav;  
    addToFav = [NSEntityDescription insertNewObjectForEntityForName:@"AddToFav" inManagedObjectContext:context];    
    [addToFav setValue:self.imageUrl forKey:@"bandImagePath"];
    NSLog(@"band image path url is %@",self.imageUrl);
    [addToFav setValue:self.bandName forKey:@"bandName"];
    NSLog(@"band name is %@",self.bandName);
    [addToFav setValue:self.bandId forKey:@"bandId"];
    NSLog(@"band ID is %@",self.bandId);
    //NSLog(@"eno is %@",eno.text);

    NSError *error;
    if (![context save:&error]) {
        NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
    }       
}

1 Ответ

2 голосов
/ 26 марта 2011

Краткий ответ: вы не можете автоматически.

Длинный ответ: Базовые данные не предоставляют способ указать атрибут как «уникальный».Есть несколько причин, почему.Будьте уверены, что если бы это было легко вставить, это было бы сделано давно.Так как вы обходите это?По сути, вы должны сначала проверить, существует ли AddToFav с указанным bandId.Если это так, то вы не создаете новый.Если этого не произойдет, тогда вы можете.

...