2016-08-07 24 views
0

私は、SpecificFoodクラスにある自分の食材名(FoodName)を取得しようとしています。食事クラスには、成分オブジェクトを含む特性mealIngredientsがあります。あるクラスから別のクラスにアクセスするにはどうすればよいですか?

テーブルビューでは、mealingredientsのfoodNameを参照しようとしていますが、食事クラスではなくSpecificFoodを参照しているため、foodNameは見つかりません。私はすべての名前と成分を別々のモデルクラスの異なる食品に入力します。

これを行うより良い方法がある場合は、私が迅速かつプログラミングに慣れているのでお知らせください。

ご協力いただければ幸いです。

let meal = self.selectedMeal 

     let ingredientTitle = meal?.mealIngredients[indexPath.row].FoodName 

     cell.textLabel?.text = String(ingredientTitle) 

     return cell 

私はそのようなトップのすべての異なるクラスを参照しました。

var myMeals:Array = [Meal]() 
    var meals:[Meal] = [Meal]() 
    var ingredients:[SpecificFood] = [SpecificFood]() 

私の食事クラスはそうです;

class Meal: NSObject { 



    var mealTitle:String = "" 
    var mealID:String = "" 
    // var mealIngredients:NSArray = [NSObject]() 
    var mealIngredients:NSArray = [SpecificFood]() 

} 

My SpecificFoodクラスはそのようなものです。

class SpecificFood: NSObject { 

    var foodName = "" 
    var foodGroup = "" 

} 

私のモデルはそのようなものです。 (私は他の食品や食材の一部を撮影したが、これはJISTを与えます。

class MealModel: NSObject { 

    var ingredients:[SpecificFood] = [SpecificFood]() 



    func getMeals() -> [Meal] { 

var allFoods = [SpecificFood]() 
let meat = String() 

let chicken = SpecificFood() 
let rice = SpecificFood() 

// Assign properties of the SpecificFoods 
chicken.foodName = "Chicken" 
chicken.foodGroup = meat 

// Add foods to my food array 
allFoods.append(chicken) 

// Create a meal objects 
var meal1 = Meal() 


// Assign properties 
meal1.mealIngredients = [chicken, rice, tomatoeSauce] 

コードの先頭2枚でのtableViewを持つクラスを参照してください。それはvar selectedMeal:Meal?

から離れには他のコードを持っていません
+0

クラス変数を表示できます – Shades

+0

@Shadesはこのヘルプを実行しますか?私は可能なすべての情報を表示しようとしました。私は混乱しているのはオブジェクト指向のプログラミングと継承だと思う。 –

+0

あなたのコードでは、この行で大文字になっているのは、FoodNameです:let ingredientTitle = meal?.mealIngredients [indexPath.row] .FoodName – Shades

答えて

0

あなたのクラス変数を見ることなく、それは少し難しいです...私はこの一般的な例を投稿します:

class firstViewController: UIViewController { 
    var someVariable: SomeType = someValue 
    var someVariable2: SomeType = someValue 

    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { 
     super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 
    } 
} 

その後、ビューをインスタンス化:

var myCustomViewController: firstViewController = firstViewController(nibName: nil, bundle: nil) 
var variable = myCustomViewController.someVariable 
var variable2 = myCustomViewController.someVariable2 
+0

これはもう役に立ちますか?不明な最初の質問を申し訳ありません。 –

+0

あなたのクラスをインスタンス化し、この例で示したように変数を取得してください。 'ソース'クラスの変数は、パブリックでグローバルでなければならないことを忘れないでください。プライベートであれば、アクセスするメソッドを作成してください – Nick

0

あなたは

meal1.mealIngredients = [chicken, rice, tomatoeSauce] 

を持っているなら、あなたと鶏の名前や食品グループにアクセス:あなたはすでにない限りあなたは構造体の代わりにクラスを(使用して検討する必要があります

meal1.mealIngredients[0].foodName // Chicken 
meal1.mealIngredients[0].foodGroup // meat 

継承を使用して)。

struct SpecificFood { 
    var foodName = "" 
    var foodGroup = "" 
} 

struct Meal { 
    var mealTitle:String = "" 
    var mealID:String = "" 
    var mealIngredients: [SpecificFood] 
} 

あなたのコードは次のようになります。

let chicken = SpecificFood(foodName: "Chicken", foodGroup: "meat") 
var meal1 = Meal(mealTitle: "Chicken and Rice", mealID: "45634", mealIngredients: []) 

、あなたは、ドット構文を使用してプロパティにアクセスします(。)。

関連する問題