2016-11-14 19 views
0

ここにいくつかの問題がありますが、うまくいけば誰かが助けることができます。フィールドからデータを取得するためのドロップダウンメニューがあります。保存機能がオフになったときにのみ保存され、情報は空白です。関数が文字列を返すように設定しようとしましたが、選択番号を表示するためにintを取っているだけなので、互換性はありません。何かご意見は?はい、文字列はpublicです。Unity3dのSQLiteデータベースへのドロップダウンメニューの保存

public string GetDropSelection(int index) 
{ 
    Debug.Log(index); 
    switch (index) 
    { 
     case 1: BrakeWheelField="Front"; 
     break; 

     case 2: BrakeWheelField="Rear"; 
     break; 

     case 3: BrakeWheelField="Both"; 
     break; 
    } 
    return BrakeWheelField; //I know this technique doesn't work because what is coming in is not what's going out. 
    Debug.Log("What is the selection?" + BrakeWheelField); //Variable has the value here. 
} 

public void GetBrakeData(string BrakeWheelField) 
{ 
    Debug.Log(BrakeWheelField); //By the time it gets to here, it's blank. 

    BrakeDateofPurchaseField=BrakeDateofPurchaseText.text; 
    BrakeMileageField=BrakeMileageText.text; 
    BrakeLocationField=BrakeLocationText.text; 
    BrakeLaborField=BrakeLaborText.text; 
    BrakeBrandField= BrakeBrandText.text; 
    BrakePriceField= BrakePriceText.text; 
    BrakeNotesField = BrakeNotesText.text; 

    DatabaseManager.Instance.SQLiteInit(); 
    DatabaseManager.Instance.SaveBrakeInfo(BrakeDateofPurchaseField, BrakeMileageField, BrakeLocationField, BrakeLaborField, BrakeBrandField, BrakePriceField, BrakeWheelField, BrakeNotesField); 

} 

ありがとうございます!

+0

あなたのメソッドの単体テストを作成して、期待値を返す正しい値を与えているかどうかを検証し、無効な入力があった場合にどうするかを確認できます。詳細については、「ユニティ・ユニット・テスト」を参照してください。 –

+0

エラーが発生する可能性のあるものがそれ以上表示されない場合、コードをデバッグするのは本当に難しいです。 IEでは、 'GroupDropSelection'がどのように呼び出されているのか、返された文字列を受け取るのかはわかりません。 'GroupDropSelection'と' GetBrakeData'の間で何が起こるのですか。 –

答えて

0

スイッチの文に「default」を追加すると、1、2、3以外のインデックスが表示されているかどうかを確認できます。

switch (index) 
{ 
    case 1: BrakeWheelField="Front"; 
    break; 

    case 2: BrakeWheelField="Rear"; 
    break; 

    case 3: BrakeWheelField="Both"; 
    break; 

    default: 
      Debug.Log("GroupDropSelection invalid index: "+index); 
    break; 
} 

デフォルトにする場合は、他のケースのいずれかにデフォルトを追加します。など

switch (index) 
{ 
    default: // Make "Front" the default for other cases than 1,2or3 
    case 1: BrakeWheelField="Front"; 
    break; 

    case 2: BrakeWheelField="Rear"; 
    break; 

    case 3: BrakeWheelField="Both"; 
    break; 
} 

別の回答、私は同じ投稿に保管します。

BrakeWheelFieldGetBrakeDataはグローバル変数ではなく、GetBrakeDataに引数として渡されるローカル変数です。 GetBrakeDataに空の値を指定すると、メソッド内にはBrakeWheelFieldもあります。 Debug.Logでは、の前に、this.を置くと、グローバル値が取得されます。私の編集を参照してください:

public void GetBrakeData(string BrakeWheelField) 
{ 
    Debug.Log(BrakeWheelField); // GetBrakeData's local BrakeWheelField 
    Debug.Log(this.BrakeWheelField); // the global value for BrakeWheelField 

    BrakeDateofPurchaseField=BrakeDateofPurchaseText.text; 
    BrakeMileageField=BrakeMileageText.text; 
    BrakeLocationField=BrakeLocationText.text; 
    BrakeLaborField=BrakeLaborText.text; 
    BrakeBrandField= BrakeBrandText.text; 
    BrakePriceField= BrakePriceText.text; 
    BrakeNotesField = BrakeNotesText.text; 

    DatabaseManager.Instance.SQLiteInit(); 
    DatabaseManager.Instance.SaveBrakeInfo(BrakeDateofPurchaseField, BrakeMileageField, BrakeLocationField, BrakeLaborField, BrakeBrandField, BrakePriceField, BrakeWheelField, BrakeNotesField); 

} 
+0

ありがとうチャック!私はシングルトンに似たようなことをしなければならないと思っています。現在のところ、保存していませんが、GetBrakeData関数を使用しています。 –

+1

チャック、そうだった!私はシングルトンだけでなく、データベースに挿入したときにthis.BrakeWheelFieldを追加する必要がありました。その後、それは働いた! –