iOS sqlite存储空值而不调用setValue



我试图在sqlite中存储产品。当我为数据库实体设置值时,我将存储正确的值。

但问题是,我做了一个检查,如果产品已经在数据库中,那么它不应该再次添加相同的产品。但是下一次它会在数据库中存储NULL值。

虽然我没有调用[addToFav setValue:@"My Value"];

就是它的检入for循环。当我的循环运行时,它不会进入第一个条件,我让counter if(count == 0)

我不知道从哪里存储NULL值。虽然我没有在其他任何地方调用它。那么如何在数据库中存储NULL值呢?

- (IBAction)buttonAddToFavourite:(id)sender {
int count = 0;
NSManagedObjectContext *context = [self managedObjectContext];
NSError *error=nil;
NSManagedObject *addToFav = [NSEntityDescription insertNewObjectForEntityForName:@"Favourite" inManagedObjectContext:context];
NSString *dish = [results objectForKey:@"id"];
fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"Favourite" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *info in fetchedObjects) {
    NSString *id1 = [info valueForKey:@"dishid"];
    if ([id1 isEqualToString:dish]) {
        count = count +1;
    }
}
if (count == 0) {
    [addToFav setValue:[results objectForKey:@"id"] forKey:@"dishid"];
    [CSNotificationView showInViewController:self
                                   tintColor:[UIColor greenColor]
                                       image:[UIImage imageNamed:@"sucess"]
                                     message:@"Saved As Favourite."
                                    duration:2.0f];
    [self.permanentNotification setShowingActivity:YES];
}
else if (count > 0){
    [CSNotificationView showInViewController:self
                                   tintColor:[UIColor redColor]
                                       image:[UIImage imageNamed:@"warning"]
                                     message:@"Dish Already Added."
                                    duration:2.0f];
    [self.permanentNotification setShowingActivity:YES];
       }
if (![context save:&error]) {
    NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}

}

- (IBAction)buttonAddToFavourite:(id)sender {
  NSError *error = nil;
  NSString *dishId = results[@"id"];
  NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Favourite"];
  [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"dishid == %@", dishId]];
  NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
  if (fetchedObjects.count) {
    [CSNotificationView showInViewController:self
                                   tintColor:[UIColor redColor]
                                       image:[UIImage imageNamed:@"warning"]
                                     message:@"Dish Already Added."
                                    duration:2.0f];
    [self.permanentNotification setShowingActivity:YES];
  }
  else {
    Favourite *obj = [NSEntityDescription insertNewObjectForEntityForName:@"Favourite" inManagedObjectContext:self.managedObjectContext];
    obj.dishid = dishId;
    [CSNotificationView showInViewController:self
                               tintColor:[UIColor greenColor]
                                   image:[UIImage imageNamed:@"sucess"]
                                 message:@"Saved As Favourite."
                                duration:2.0f];
    [self.permanentNotification setShowingActivity:YES];
    if (![context save:&error]) {
      NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }
  }
}

最新更新