VasuIppili
VasuIppili

Reputation: 47

How to save a UIImage from a UIImageView in Core Data

I have issue in UIImageView. In my project I have used two UIImageViews (mainview for saving the background color and drawimage for drawing), one as subview of the other:

[self.view addSubview:mainview];
[self.mainview addSubview:drawImage];

The problem is that whenever I am trying to save the objects in Core Data only one image is saved. This is my code:

 if(checkedcore==YES)
                {

                 NSData *imageData = UIImageJPEGRepresentation(mainview.image,1.0);
                NSManagedObject *imagetblObj= [NSEntityDescription insertNewObjectForEntityForName:@"Imagedata" inManagedObjectContext:context];



                //[imagetblObj setValue:<#(id)#> forKey:<#(NSString *)#>]



                //[imagetblObj setValue:self.imageData forKey:@"imageData"];
                [imagetblObj setValue:imageData forKey:@"imageData"];
                [imagetblObj setValue:self.textfield.text forKey:@"date"];
                [imagetblObj setValue:@"table" forKey:@"tabletext"];

                [context deleteObject:imagemanaged];


                [context insertObject:imagetblObj];

                NSError *err;
                if (![context save:&err]) 
                {
                    NSLog(@"Couldn't save history item into coredata");
                }
                else
                {

                    NSLog(@"data saved");
                }

                UIAlertView *alertview=[[UIAlertView alloc]initWithTitle:@"" message:@"Image Updated" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alertview show];

                NSLog(@"data saved");


                NSLog(@"save clicked");

                /// [self getcoredata];

               // TextPlacedViewController *viewcontroller=[[TextPlacedViewController alloc]initWithNibName:@"TextPlacedViewController" bundle:nil];
                ///viewcontroller.tabledata=self.array;
                ////viewcontroller.myimage=drawImage.image;
                ///[self.view   addSubview:viewcontroller.view];
                   // [self.navigationController popViewControllerAnimated:YES];
                }
                }


            else
            {
                mainview.image=drawImage.image;
       NSData *imageData = UIImageJPEGRepresentation(mainview.image, 1.0);


            if(![imageData isKindOfClass:[NSNull class]]||imageData==nil)
            {

        NSManagedObjectContext *context = [appDelegate managedObjectContext];
        NSManagedObject *imagetblObj= [NSEntityDescription insertNewObjectForEntityForName:@"Imagedata" inManagedObjectContext:context];

        [imagetblObj setValue:imageData forKey:@"imageData"];

        [imagetblObj setValue:self.textfield.text forKey:@"date"];
       [imagetblObj setValue:@"table" forKey:@"tabletext"];
        NSError *err;
        if (![context save:&err]) 
        {
            NSLog(@"Couldn't save history item into coredata");
        }
        UIAlertView *alertview=[[UIAlertView alloc]initWithTitle:@"" message:@"Data Saved" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertview show];

        NSLog(@"data saved");


        NSLog(@"save clicked");

        /// [self getcoredata];

        saveimageviewcontroller *viewcontroller=[[saveimageviewcontroller alloc]initWithNibName:@"saveimageviewcontroller" bundle:nil];
        ///viewcontroller.tabledata=self.array;
        ////viewcontroller.myimage=drawImage.image;
        ///[self.view   addSubview:viewcontroller.view];
        [self.navigationController pushViewController:viewcontroller animated:YES];

Upvotes: 0

Views: 343

Answers (1)

Mundi
Mundi

Reputation: 80271

Clean up your code:

  • get the image from the image view
  • convert it to NSData
  • save it in your Core Data entity

Upvotes: 1

Related Questions