2013-06-11 2 views
1

항해를 시도 할 때 약 1 년 전에 가지고 있었던 것을 기억하지 못하는 문제가 있습니다. 내 스키마에서Voyage에서 순환 참조를 나타내는 그래프를 유지하는 방법은 무엇입니까?

하는 사용자instVar이가 instVar사용자의 모든 참조를 가지고 모든 센터 그가 속한하고 센터를 참조가 그렇게 할 때 항해 시리얼 사용자 (또는 센터)를 직렬화하려고하면 참조 체인의 끝과 이미지가 막히는 것을 발견하려고 무한 루프가됩니다.

문제가 발생하지 않은 이전과 똑같은 스키마를 저장했는데, 내가 알아야 할 새로운 것이 있습니까?

현재, Magritte3 및 all을 사용하여 # bleedingEdge 버전을 사용하고 있습니다.

감사합니다. :)

답변

1

문제를 재현하려고 시도하고 내 예제에서 잘 작동합니다. 내가 한 일은 다음과 같습니다.

당신은 스타가 있습니다. 행성에는 행성 소유자가 있으며, 소유자 스타와 시간 지점에 있습니다.

Star new 
    name: 'Sun'; 
    position: 10[email protected]; 
    addPlanet: (Planet new 
     name: 'Earth'; 
     orbit: 3; 
     yourself); 
    save 

모두 가능한 조합

나를 위해 작동합니다

Star class>>#isVoyageRoot 
    ^true 
Planet class>>#isVoyageRoot 
    ^true 

과 : 그래서

Star class>>#isVoyageRoot 
    ^true 
Planet class>>#isVoyageRoot 
    ^false 

을 ... 당신의 오류 :(

+0

귀하의 코드 어디 있는지 모르겠어 또한 나를 위해, 그래서 내 모델에서 뭔가 다른 것 같아요 ... 적어도 지금은 내 잘못이야! 고마워요 :) –