Как я могу отобразить и сохранить изображения, используя Core Data и RestKit? - PullRequest
2 голосов
/ 16 декабря 2011

Использование изображений с Core Data не является проблемой. Существует множество примеров того, как это сделать, например: Как хранить UIImages в моей базе данных базовых данных?

Я хочу знать, как использовать RestKit для загрузки изображений и их правильной привязки к Core Data. Существует пример RestKit о том, как загрузить изображение, но не загружать и извлекать его.

Прямо сейчас мои сущности просто имеют атрибут с URL-адресом изображения, но я хочу иметь возможность доступа к изображениям в автономном режиме. Я думал о том, чтобы сделать какое-то простое сопоставление, например загрузить изображение и переименовать его в id объекта, которому оно принадлежит, но перед тем, как воссоздать это колесо, мне было интересно, знает ли кто-то еще самый «правильный» способ достижения этого.

Ответы [ 2 ]

1 голос
/ 30 января 2012

В итоге я просто запросил объект с URL-адресом изображения, и после получения объекта я взял изображение для URL-адреса, установив его в свойстве image моего объекта.Простой

NSURL * imageURL;UIImage * selectedImage;

    for (Employee *employee in _employees){

        imageURL = [NSURL URLWithString:employee.imageURL];
        selectedImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imageURL]];
        // Delete any existing image.
        NSManagedObject *oldImage = employee.image;
        if (oldImage != nil) {
            [employee.managedObjectContext deleteObject:oldImage];
        }

        // Create an image object for the new image.
        NSManagedObject *image = [NSEntityDescription insertNewObjectForEntityForName:@"Image" inManagedObjectContext:employee.managedObjectContext];
        employee.image = image;

        // Set the image for the image managed object.
        [image setValue:selectedImage forKey:@"image"];

        // Create a thumbnail version of the image for the recipe object.
        CGSize size = selectedImage.size;
        CGFloat ratio = 0;
        if (size.width > size.height) {
            ratio = 100.0 / size.width;
        } else {
            ratio = 100.0 / size.height;
        }
        CGRect rect = CGRectMake(0.0, 0.0, ratio * size.width, ratio * size.height);

        UIGraphicsBeginImageContext(rect.size);
        [selectedImage drawInRect:rect];
        employee.thumbnailImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }
1 голос
/ 21 декабря 2011

Я использую JsonKit и ASIHTTPRequest, но применяется тот же принцип - я использую кодировку base64 для хранения данных изображения в виде строки.Это подход, независимый от платформы и языка, который хорошо соответствует стандарту JSON.

Какао с Мэттом Галлахером из Love написал очень чистую категорию для NSData для кодирования и декодирования base64.

...