Если вы хотите сохранить синтаксис forEach
, это способ повысить его эффективность (хотя и не так хорошо, как обычный цикл for). Немедленно проверьте переменную, которая знает, хотите ли вы выйти из цикла.
В этом примере используется анонимная функция для создания области функции вокруг forEach
, которая необходима для хранения информации done .
(function(){
var element = document.getElementById('printed-result');
var done = false;
[1,2,3,4].forEach(function(item){
if(done){ return; }
var text = document.createTextNode(item);
element.appendChild(text);
if (item === 2){
done = true;
return;
}
});
})();
<div id="printed-result"></div>
Мои два цента.
с вашей помощью мне наконец удалось определить правильный предикат для моего сценария. Похоже, что объект NSDate обрабатывается как double, однако double никогда не бывает чем-то вроде 3.7, это всегда как 3.0 Следовательно, в моих тестах правильно работает следующий предикат:
NSPredicate *occurrenceIsNotExcludedPredicate = [NSPredicate predicateWithFormat: @"(excludedOccurrences.@count == 0 || (excludedOccurrences.@count > 0 && NONE excludedOccurrences.start == %@))",thisDate];
где thisDate - это объект NSDate, содержащий только компоненты дня, месяца и года (как в случае свойства start объекта ExcludedOccurrence.
Тестирование пустого значения отношения в основном выполняются с использованием агрегатного оператора @count, как это предлагают некоторые люди в Apple.
И снова большое спасибо за вашу помощь. Я до сих пор замечаю, что документация содержит изъяны в нескольких частях (особенно там, где говорится, что ВСЕ работает нормально, а вместо этого не работает вообще).
Чтобы проверить наличие пустого отношения, вы должны сравнить счетчик ключа ко многим с нулем.
[NSPredicate predicateWithFormat:@"excludedOccurrences.@count == 0"];
Что касается ваших субпредикатов, имейте в виду, что вы можете иметь только один из ВСЕ
или ЛЮБЫЕ
модификаторы в вашем последнем предикате, хотя вы можете использовать этот модификатор несколько раз во всем предикате.
Неверно : ЛЮБОЙ foo.bar = 1 И ВСЕ foo.baz = 2
ОК: ЛЮБОЙ foo.bar = 1 И! (ЛЮБОЙ foo.baz! = 2)
На моем AMD Phenom эти заменители часов примерно на 1,5% быстрее:
static inline unsigned int
min(unsigned int a, unsigned int b, unsigned int c)
{
asm("cmp %1,%0\n"
"cmova %1,%0\n"
"cmp %2,%0\n"
"cmova %2,%0\n"
: "+r" (a) : "r" (b), "r" (c));
return a;
}
Результаты могут варьироваться; Некоторые процессоры x86 не очень хорошо работают с CMOV.
-121--2141185-Directory.GetFiles("/content/images/thumbs")
Все файлы в каталоге будут помещены в строковый массив.
-121--2182872-Итак, чтобы проверить непустые отношения, это на самом деле работает:
[NSPredicate predicateWithFormat:@"relationship.@count != 0"]
Решение, данное Эшли Кларк терпит крах, давая «многим ключ, не разрешенный здесь»