One optimization is replacing
NSArray *objects = [context executeFetchRequest:request error:&error];
by
[request setFetchLimit:1];
NSUInteger count = [context countForFetchRequest:request error:&error];
if you want to check for objects.
But I guess the main performance issue is finding a lookup with LIKE, which is slower than finding with ==.
deleted.<status>.<picturenumber> ( ), , status picturenumber .
[NSPredicate predicateWithFormat:@"picturenumber == %d", i];
. , ( @flexaddicted, ).