0

HTTP를 사용하여 XML을로드하고 목록에 결과를 표시합니다. XML 레코드가 두 개 이상 발견되면 작동합니다. 그러나 반환 된 XML 레코드가 하나 뿐인 경우에는 어떤 이유로 든 다르게 처리되어 생성됩니다. 이 오류 :listProvider 데이터가 단일 레코드로 돌아 오는 경우를 어떻게 해결합니까?

Suspended: TypeError: Error #1034: Type Coercion failed: cannot convert mx.utils::ObjectProxy 

는이 같은 게시물을 참조하십시오 ...

http://anupushkaran.blogspot.com/2010/02/typeerror-error-1034-type-coercion.html 

하지만 난 내 HTTPService를 resultHandler 코드 블록에 적응하는 방법을 알아낼 질수 FB 4.6을 사용하여

임과 내 XML 구조가 보인다. 다음과 같습니다.

SiteXYZ 
    Events 
     EventListing 

및 사용하려는 모든 데이터는 EventListing 노드 아래에 있습니다.

길이가 1 일 때 감지 할 수있는 코드를 테스트 했으므로 길이가 1 일 때 감지하고 다르게 처리 할 수 ​​있다고 생각합니다.

임 내가 생각하는 보는 또 다른 일이 ... 내게 가까이를 얻을 내가 네트워크 모니터의 트 리뷰를 볼 때> 응답> 응답 바디 내가 성공적인 여행 것을 볼 수 있습니다, 몸이되어 다시 같은 :

SiteXYZ 
    Events 
    EventListing 
     [0] 
     [1].... and so on.... 

그러나 그 하나의 레코드가 반환 된 경우에, 응답의 몸이 다시 같은 제공 :

SiteXYZ 
    Events 
     EventListing 

나는 그것의 단지 하나의 레코드를 반환하고 그에 따라 목록의 dataProvider를 설정할 때 감지 할 수 있도록 야해? 그것의 하나의 레코드를 반환 할 때, 어떻게 dataProvider의이

list1.dataProvider = myXML.lastResult.SiteXYZ.Events.EventListing; 

하지만이 설정됩니다 : 있도록 반환의 그 많은 기록 할 때의 dataProvider가 설정됩니다? 이 작업을하지 못했습니다 :

list1.dataProvider = lfXML.lastResult.LeisureFun.Events; 

아무도 도와 드릴 수 있습니까? 기지에서 내 접근 방식입니까? 질문의 어지러운 본질을 위해 유감스럽게 생각한다 그러나 나가 타자를 쳐 넣은대로, 나는 대략 5 시간을 멈추고 나가 그것을 통해 생각한대로 마음에 오는 많은 것을 시도했다 ... 아직도 아무것도 작동하지 않았다 ... 나는 무언가에 Im 같이 느낀다 (잘못 될 수도 있음)하지만 아직 해결할 수 없습니다.

+0

약 2 년 전에 flex 3으로 만났습니다. 그리고 나는 내가 한 일을 기억하지 않습니다. 하지만 나는 그것에 대한 사용자 지정 항목 렌더러를 만들어야한다고 생각하고 있습니다. 몇 시간 후에 코드를 볼 수 있습니다. –

+0

@The_asMan - 감사합니다. 감사합니다.메신저 기본적으로 여분의 가짜 레코드로 내 xml을 채우는 것에 대해 생각한 다음 목록을 만든 후 그것을 숨기거나 숨길 수있는 플래그를 설정합니다. 슬픈 일이지만 아마 이런 짓을하지 않을 것입니다. 그것은 몇 가지 심각한 생각! – tamak

+0

첫 번째 상황에서 배열을 반환한다는 설명에서 나에게 보인다. 두 번째 상황에서는 배열을 반환하지 않습니다. 그건 나에게 이상한 것 같다. 두 번째 상황이 단일 요소가있는 배열을 반환하지 않는 이유는 무엇입니까? 좋아요 : EventListing [0]. 일관성없는 구조를 수정하면 문제가 해결됩니다. – JeffryHouser

답변

0

답변

내가 해당 게시물이 제시 한 문제가 있었다 말에 면밀한 관찰을 가지고 가고 .... 내가 언급 한 원래의 웹 사이트에 있던 그 코드는 그것을 해결하고 위해 작동시킬 수 얼마나 이 날 때 ... 내 resultHandler 블록에 넣어
arr=new ArrayCollection(); 
if(event.result.SiteXYZ.Events.EventListing is ArrayCollection) 
{ 
arr = ArrayCollection(event.result.SiteXYZ.Events.EventListing); 
} 
if(event.result.SiteXYZ.Events.EventListing is ObjectProxy) 
{ 
arr =new ArrayCollection(ArrayUtil.toArray 
    (event.result.SiteXYZ.Events.EventListing)); 
} 

이제 하나 개의 레코드가 잘 보여줍니다 반환 ... 여러 레코드에 동일한 돌아왔다.

도움을 주셔서 감사합니다 ... 나는이 스 니펫을 나중에 사용하기 위해 저장합니다!