Flex: Вид — Запись пользовательского compareFunction?

http://smartmontools.sourceforge.net/badblockhowto.html#sdisk

Видит раздел по переназначению сбойного блока. Можно восстановить это на уровне файловой системы или блочном уровне, видя, что у Вас есть несколько файловых систем, и каждый является несобственным, я рекомендовал бы позже. Можно выполнить badblocks и передать вывод по каналу к sg_reassign.

Резервное копирование любые критические данные перед продолжением.

8
задан Peter Mortensen 24 January 2012 в 19:42
поделиться

3 ответа

Я попробовал кое-что и очень удивлен, что это действительно сработало, но вот что я сделал:

Класс Sort имеет частную функцию под названием internalCompare. Поскольку это личное, вы не можете его называть. НО существует функция получения, называемая compareFunction, и если функция сравнения не определена, она возвращает ссылку на функцию internalCompare. Я получил эту ссылку и затем назвал ее.

private function myCompare(a:Object, b:Object, fields:Array = null):int
{
    if(String(a).toLowerCase() == 'all')
    {
        return -1;
    }
    else if(String(b).toLowerCase() == 'all')
    {
        return 1;
    }
    // NEED to return default comparison results here?
    var s:Sort = new Sort();
    var f:Function = s.compareFunction;
    return f.call(null,a,b,fields);
}
8
ответ дан 5 December 2019 в 07:59
поделиться

The solution from John Isaacks is awesome, but he forgot about "fields" variable and his example doesn't work for more complicated objects (other than Strings)

Example:

// collection with custom objects. We want to sort them on "value" property
// var item:CustomObject = new CustomObject();
// item.name = 'Test';
// item.value = 'Simple Value';

var collection:ArrayCollection = new ArrayCollection();
var s:Sort = new Sort();
s.fields = [new SortField("value")];
s.compareFunction = myCompare;
collection.sort = s;
collection.refresh();

private function myCompare(a:Object, b:Object, fields:Array = null):int
{
    if(String((a as CustomObject).value).toLowerCase() == 'all')
    {
        return -1;
    }
    else if(String((b as CustomObject).value).toLowerCase() == 'all')
    {
        return 1;
    }
    // NEED to return default comparison results here?
    var s:Sort = new Sort();
    s.fields = fields;
    var f:Function = s.compareFunction;
    return f.call(null,a,b,fields);
}
14
ответ дан 5 December 2019 в 07:59
поделиться

Спасибо, ребята, это очень помогло. В нашем случае нам нужны были все пустые строки (в DataGrid) внизу. Все непустые строки следует отсортировать обычным образом. Все данные нашей строки - это динамические объекты (преобразованные из JSON) - вызов ValidationHelper.hasData () просто проверяет, пуста ли строка. По какой-то причине поля иногда содержат значение dataField String вместо SortFields, поэтому проверка перед установкой свойства 'fields':

private function compareEmptyAlwaysLast(a:Object, b:Object, fields:Array = null):int {
    var result:int;
    if (!ValidationHelper.hasData(a)) {
        result = 1;
    } else if (!ValidationHelper.hasData(b)) {
        result = -1;
    } else {
        if (fields && fields.length > 0 && fields[0] is SortField) {
            STATIC_SORT.fields = fields;
        }
        var f:Function = STATIC_SORT.compareFunction;
        result = f.call(null,a,b,fields);
    }
    return result;
}
0
ответ дан 5 December 2019 в 07:59
поделиться
Другие вопросы по тегам:

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