я задаюсь вопросом - ли это мудрый выбор снабдить изображения базовыми данными в двоичное свойство
скажите, что у меня есть набор фильмов, и я хочу сохранить обложку DVD изображения в свойство в среднем, размер покрытия является 20/30kb (320x480 пкс)
причина, которую я хочу сделать, это для управления хранением, после того как я удаляю фильм, я знаю, что изображение также удалено
я просто не совсем уверен, является ли это хорошая идея, загрузка данных, скорость?
у кого-либо есть опыт с этим?
Мне кажется, что хранение изображений в основных данных не хорошая идея, и я почти уверен, что я также прочитал его на одном из руководств по программированию 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.
}
}
Нет ничего «грязного» в использовании предложения try-except. Это пифонический путь. StartError
будет создан только методом .index
, поскольку это единственный код!
Ответ на комментарий:
В Python легче попросить прощения, чем получить разрешение философия хорошо утвердилась, и нет индекс
не поднимет такого типа ошибки для любых других вопросов. Не то, чтобы я мог думать ни о чем.
из 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
объекта.
Мне пришло в голову, что вы можете использовать другой подход, который может быть лучше, если вы уже подклассали NsmanageObject для вашего сущности фильма.
Вы можете реализовать метод DIDSAVE или WILSSAVE на NSManageObjectObject и проверьте свойство Isdeleted. Если он удален, удалите изображение с диска.