2014-04-14 3 views
0

나는 개인적인 용도로 간단한 개인 금융 애플 리케이션을 작성하려고하는데 다음과 같은 문제점이 있으며 누구나 나를 똑바로 세울 수 있는지 궁금해합니다.핵심 데이터 관리 대상 세트

내 데이터 모델은 매우 간단합니다. NSSet은 '트랜잭션'관리 대상 개체를 가지며 'NSSSet'개체는 '분할 된'관리 대상 개체를 갖습니다.

'split'객체에는 카테고리와 금액이 있으므로 모든 거래가 금액이 다른 여러 카테고리로 구성 될 수 있습니다. 예 : 거래 총액이 25 파운드에서 40 파운드 - 식품 및 15 파운드 - 연료 등

'트랜잭션'관리 대상 객체는 다른 '트랜잭션'관리 대상 객체와 1 대 1 관계를 가질 수도 있습니다. 이것은 제가 송금을 대표 할 때를위한 것입니다. 따라서 날짜 등 같은 속성을 가진 2 개의 '트랜잭션'개체가 있지만 각기 다른 '계정'에 속해 있으므로 계정의 트랜잭션 목록을 쿼리 할 때 표시됩니다.

setDate와 같은 '트랜잭션'관리 객체에 적절한 설정자를 오버라이드하여이를 호출 할 때 다른 '트랜잭션'관리 객체가 연결되어 있는지 확인합니다. 해당 거래 날짜. 그렇게하면 한 거래에 대한 변경 사항이 다른 계좌 거래에 반영됩니다.

아직도 나와 .. ..? 이제 문제는 트랜잭션의 '분할 된'객체의 NSSet에 있습니다.

내가 계정 A에 새 거래를 생성했다고 가정 해 보겠습니다. 거래 날짜를 설정했습니다. 인수에 대해 20 파운드의 음식 카테고리가있는 거래의 '분할'개체를 만듭니다. 내 UI에서이 거래가 이전이라고합니다. 이렇게하면 이전하려는 계좌를 선택하고 계좌 B를 선택합니다. 백그라운드에서 새 '트랜잭션'개체가 생성되고 계좌가 B 계좌로 설정되며 원래 거래에서 날짜 등을 복사합니다 계정에서하지만 '트랜잭션'개체를 동일한 '집합'의 NSSet을 가리 키도록 설정하려고합니다.

그런 식으로, 만약 내가 하나의 거래 중 하나의 분할에 범주 또는 금액을 변경하면 다른 거래에 반영됩니까? 보다 간단한 속성의 변경은 앞서 언급 한 setDate와 같은 setter를 통해 처리됩니다. 두 '트랜잭션'개체가 동일한 NSSet의 분할을 가리킬 수 있습니까? 아니면 변경이 이루어질 때 수동으로 두 세트의 변경 사항을 동기화해야합니까?

희망 사항은 이해하고 도움을 주셔서 감사합니다.

+0

전송에 실제로 분할이 있습니까? 유스 케이스 란 무엇입니까? – Wain

답변

0

귀하의 관계는 많은 수로 이루어져야합니다 : 트랜잭션과 분할 엔티티 사이의 관계가 많아야합니다.

만약 그렇다면 오버라이드를 시도하기보다는 전송과 분할을 모두 설정하는 맞춤형 메소드를 만드는 것이 더 낫습니다. 하나의 관계가 다른 오브젝트 관계로의 변경을 기반으로 갱신되는 방법에 대한 논리를 작성해야합니다. 일단 관계가 설정되면 반대쪽에있는 객체가 공통적이므로 분할 된 인스턴스에 대한 변경 사항은 간단합니다.

자동 생성 코드와 별도로 맞춤 코드를 관리하는 데는 발전기를 사용하는 것이 좋습니다.

+0

정보를 제공해 주셔서 감사합니다. 간단한 예제 코드를 제공해 주시겠습니까? – olly

+0

어느 부분을 위해? 기본적으로 당신이 이미 말했던 것과 같습니다. 사용자 지정 방법은 전송 트랜잭션을 설정하고 동시에 자체 및 해당 분할을 연결할 수있는 기능을 제공합니다. – Wain

0

모델을 변경하는 것이 좋습니다.

거래 엔티티는 날짜와 설명과 같은 분할 엔티티에서 공유하는 데이터 용입니다. 각 트랜잭션에는 항상 최소 1 개의 스플릿 (또는 시스템 이중 항목 계산을 수행하는 경우 2 개의 스플릿)이 있습니다.Split 엔터티를 통해 트랜잭션 속성을 노출 할 수 있습니다.

귀하의 계좌 엔티티는 거래와 직접적인 관계가 없습니다. Split 엔티티와의 직접적인 관계 만 있습니다.