CoreData (для iPhone) хранящие изображения

я задаюсь вопросом - ли это мудрый выбор снабдить изображения базовыми данными в двоичное свойство

скажите, что у меня есть набор фильмов, и я хочу сохранить обложку DVD изображения в свойство в среднем, размер покрытия является 20/30kb (320x480 пкс)

причина, которую я хочу сделать, это для управления хранением, после того как я удаляю фильм, я знаю, что изображение также удалено

я просто не совсем уверен, является ли это хорошая идея, загрузка данных, скорость?

у кого-либо есть опыт с этим?

6
задан gerry3 27 January 2010 в 07:16
поделиться

3 ответа

Мне кажется, что хранение изображений в основных данных не хорошая идея, и я почти уверен, что я также прочитал его на одном из руководств по программированию Apple. Просто рассмотрим это, когда вы извлеките свою коллекцию, все изображения также будут загружены в память, даже если вы отображаете только 8 изображений, ваша коллекция вашего изображения будет загружена основными данными.

Если вы хотите убедиться, что вы удалите файлы изображений, когда была удалена запись «Перемещение», я предлагаю вам слушать уведомления управляющими файлами ManagedObjectContext и удаления файлов, когда фильм был удален:

Вы можете либо зарегистрироваться для WHILSAVE или DEDSAVE Уведомление, каждая с собой собственные преимущества / недостатки.

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(contextDidSave:) name:NSManagedObjectContextDidSaveNotification object:managedObjectContext];

Получение удаленных объектов:

- (void) contextDidSave:(NSNotification *)notification
{
    NSDictionary *userInfo = [notification userInfo];
    for (NSManagedObject *currObject in [userInfo objectForKey:NSDeletedObjectsKey])
    {
         // Code for deleting file associated with the NSManagedObject, you can still
         // access the managed object's properties.
    }
}
11
ответ дан 8 December 2019 в 12:20
поделиться

Нет ничего «грязного» в использовании предложения try-except. Это пифонический путь. StartError будет создан только методом .index , поскольку это единственный код!

Ответ на комментарий:
В Python легче попросить прощения, чем получить разрешение философия хорошо утвердилась, и нет индекс не поднимет такого типа ошибки для любых других вопросов. Не то, чтобы я мог думать ни о чем.

-121--782612-

из khtan @ Форумы SQL Server , это используется для удаления всех пустых таблиц, возможно, вы могли бы адаптировать его для вывода счетчика?

declare @name varchar(128), @sql nvarchar(2000), @i int
select  @name = ''
while   @name < (select max(name) from sysobjects where xtype = 'U')
begin
    select @name = min(name) from sysobjects where xtype = 'U' and name > @name
    select @sql = 'select @i = count(*) from [' + @name + ']'
    exec sp_executesql @sql, N'@i int out', @i out
    if @i = 0
    begin
        select @sql = 'drop table [' + @name + ']'
        print @sql
            -- unmask next to drop the table
        -- exec (@sql)
    end
end

У меня нет SQLServer здесь, но я мог бы нанести удар, если хотите.

-121--2814184-

Наилучшим методом является сохранение пути к изображению в управляемом объекте, а затем удаление файла в методе prepateForDeletion объекта.

7
ответ дан 8 December 2019 в 12:20
поделиться

Мне пришло в голову, что вы можете использовать другой подход, который может быть лучше, если вы уже подклассали NsmanageObject для вашего сущности фильма.

Вы можете реализовать метод DIDSAVE или WILSSAVE на NSManageObjectObject и проверьте свойство Isdeleted. Если он удален, удалите изображение с диска.

1
ответ дан 8 December 2019 в 12:20
поделиться