Базовые Данные, NSPredicate и к - многие вводят

Если вы хотите сохранить синтаксис 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>

Мои два цента.

42
задан Massimo Cafaro 22 July 2009 в 10:25
поделиться

3 ответа

с вашей помощью мне наконец удалось определить правильный предикат для моего сценария. Похоже, что объект 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.

И снова большое спасибо за вашу помощь. Я до сих пор замечаю, что документация содержит изъяны в нескольких частях (особенно там, где говорится, что ВСЕ работает нормально, а вместо этого не работает вообще).

28
ответ дан 26 November 2019 в 23:17
поделиться

Чтобы проверить наличие пустого отношения, вы должны сравнить счетчик ключа ко многим с нулем.

[NSPredicate predicateWithFormat:@"excludedOccurrences.@count == 0"];

Что касается ваших субпредикатов, имейте в виду, что вы можете иметь только один из ВСЕ или ЛЮБЫЕ модификаторы в вашем последнем предикате, хотя вы можете использовать этот модификатор несколько раз во всем предикате.

Неверно : ЛЮБОЙ foo.bar = 1 И ВСЕ foo.baz = 2
ОК: ЛЮБОЙ foo.bar = 1 И! (ЛЮБОЙ foo.baz! = 2)

110
ответ дан 26 November 2019 в 23:17
поделиться

На моем 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"]

Решение, данное Эшли Кларк терпит крах, давая «многим ключ, не разрешенный здесь»

8
ответ дан 26 November 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: