2010-01-26 1 views
2

계정 및 트랜잭션 (금전)이있는 코어 데이터 코코아 애플리케이션을 작성하고 있습니다. 계정 엔터티 설명에 균형 특성이 포함되어 있습니다. 거래 엔티티 설명은 계정과의 관계가 있습니다.코코아 바인딩 : 변경시 이전 값 받기

거래가 계좌가 설정되거나 변경 될 때 계정 잔액을 업데이트하려면 애플리케이션이 필요합니다. 예를 들어, 거래 계좌가 수표에서 신용으로 변경되면 수표와 여신의 잔액이이를 반영하여 변경되어야합니다.

내가 겪고있는 문제는 거래 잔액을 업데이트 할 수 있도록 거래의 이전 계정을 결정하는 방법을 잘 모르겠다는 것입니다. 바인딩을 사용하고 있습니다.

누구나 올바른 방향으로 나를 가리킬 수 있습니까?

답변

1

계좌 엔티티가 거래와 역관계를 가지고 있다고 가정합니다. (애플은 강하게 항상 역의 관계를 의미한다. 당신이하지 않은 경우, 그것을 설정하시기 바랍니다 그래서!)

하는의 당신이 서브 클래스 계정 개체에 대한 NSManagedObjectAccount하고, 거래 기업에 대한 Transaction 있다고 가정 해 봅시다. 트랜잭션에 대한 역 관계를 transactions으로 호출하십시오.

그런 다음 트랜잭션 계정을 변경하면 역 관계가 CoreData에 의해 자동으로 업데이트됩니다. 따라서 transactions에 대한 자체 관측 루틴을 Account에 작성하여 Account 개체가 자체적으로 잔액을 추적하도록하기 만하면됩니다. 나는 Account 개체를 Transaction 개체의 측면에서 균형을 변경하는 것보다 스스로 처리하는 것이 더 개체 지향적 인 것이라고 생각합니다 ... 물론 당신의 취향에 달려 있지만.

관찰을 수행하려면 KVO을 사용하십시오. 기본적으로 KVO를 addObserver:forKeyPath:options:context:으로 등록하고 적절한 옵션 집합을 사용하십시오. 그런 다음 observeValueForKeyPath:ofObject:change:context:을 구현하여 변경 사항을 얻습니다. 변경 사항은 해당 메소드에 전달 된 사전에서 찾을 수 있습니다.

+0

새 값과 이전 값을 모두 전달하도록 지정하는'-addObserver : forKeyPath : options : context :'의'options :'설정에서 확인하십시오. –