0

私は、一般的なビジネスオブジェクトを表すObjective Cのクラスを持っています(私の質問のために、それは銀行口座だとしましょう)。私はJavaC#のバックグラウンド(FYI)を持っています。これで、このbankAccountには、タイプを定義するenumプロパティと、NSURlプロパティがあります。

        //this is in the bankAccount.h file
        typedef enum {Checking, Savings, Investor} AccountType;
        -(NSURL *)url;

これで、ユーザーは新しい銀行口座を作成し、列挙型を関連するタイプに設定できます。新しい銀行口座オブジェクトを割り当てた後、urlプロパティにアクセスする必要があるかもしれないので、適切に初期化するそのプロパティのゲッターを実装する必要があります。ここでの私の質問は、urlプロパティを正しく初期化するために、呼び出し元のクラスが自分の銀行口座に対して作成した銀行口座の種類をどのように知ることができるかということです。

今のように、これは私がbankaccount.mファイルにURLを実装する方法です:

 -(NSURL *)url {   
       if (url != NULL) {
       return url;
       }
  NSString *filePath;
  // figure out the file path base on account type
  switch (AccountType) {
  }

  return url;

}

これはBankaccount.mファイルにあることに注意してください。このファイルは、作成されているインスタンスが何であるかを呼び出し元のクラスで実際には認識していません。多分私は混乱していて、それは単純な答えかもしれませんが、私はこの概念に頭を悩ませることはできません。

ヘルプの人に感謝します。

4

1 に答える 1

1

列挙型に情報を正確に保存できないことを忘れていると思います。列挙型の値をいくつかの変数に保存します。必ずしもこのようにコードを設定する必要はありませんが、おそらくこれがあなたが探しているものです。

// BankAccount.h
#import <Foundation/Foundation.h>
typedef enum {
    Checking = 1,
    Savings = 2,
    Investor = 3
} AccountType;

@interface BankAccount : NSObject
-(void)setAccountType:(AccountType)theType; //Setter
-(NSURL *)url;
@end

// BankAccount.m
#import "BankAccount.h"
@implementation BankAccount

-(void)setAccountType:(AccountType)theType {
    self.bankAccountType = theType;
}

-(NSURL *)url {
    NSURL *someUrl;
    switch (self.bankAccountType) {
        case Checking:
            someUrl = [NSURL URLWithString:@"http://xzyChecking"];
            break;
        case Savings:
            someUrl = [NSURL URLWithString:@"http://xzySavings"];
            break;
        case Investor:
            someUrl = [NSURL URLWithString:@"http://xzyInvestor"];
            break;
        default:
            someUrl = [NSURL URLWithString:@"http://xzyError"];
            break;
    }
    return someUrl;
}

@end
于 2013-01-22T04:01:20.633 に答える