0

当您为排序(ISort)提供两个字段时,排序算法是否有优先级?即,如果您按日期和时间排序,那么排序是否仅在日期相等时排序时间?

下面的示例代码:

private function sortXMLListCollection(listCollection:XMLListCollection, fields:Array):XMLListCollection
{
    var descendingSort:Sort = new Sort();
    descendingSort.fields = new Array();

    for each( var field:String in fields)
    {
        descendingSort.fields.push(new SortField(field, true));
    }

    listCollection.sort = descendingSort;
    listCollection.refresh();

    return listCollection;
}

Function Call: sortXMLListCollection(patchCollection, ["date", "time"]);

Sample XML:
<patch>
  <time>08:44:46</time>
  <date>10/10/12</date>
</patch>
<patch>
  <time>08:51:09</time>
  <date>10/10/12</date>
</patch>
<patch>
  <time>08:46:04</time>
  <date>10/11/12</date>
</patch>

不知何故,上述功能无法按我的预期工作。我希望它首先比较日期,并且仅在日期相等时才对时间进行排序。

谢谢您的帮助

4

1 回答 1

0

你的问题不是你的代码......这是你的xml。

如果添加根节点,您的代码将按预期工作:

var xml:XML = 
    <root>
      <patch>
        <time>08:44:46</time>
        <date>10/10/12</date>
      </patch>
      <patch>
        <time>08:51:09</time>
        <date>10/10/12</date>
      </patch>
      <patch>
        <time>08:46:04</time>
        <date>10/11/12</date>
      </patch>
    </root>

var patchCollection:XMLListCollection = new XMLListCollection(xml.patch);

sortXMLListCollection(patchCollection, ["date", "time"]);
于 2012-11-01T17:15:43.823 回答