2016-03-31 5 views
0

に拡張内のプロパティにアクセスすることはできません。どうすればそれにアクセスできますか?は、私はクラスの内部でそれにアクセスしようとする場合、私は<code>Use of unresolved identifier 'selectedCategory'</code>を取得し、同じクラス</p> <p>の延長で宣言されたプロパティ<code>let selectedCategory</code>にアクセスすることはできませんスウィフト2.1

extension CreateRecipeVC: RecipeCategoryTableVCDelegate { 
    func categoryController(controller: RecipeCategoryTableVC, didSelectCategory category: String) { 
     let selectedCategory = category 

     self.navigationController?.popViewControllerAnimated(true) 

     let cell = RecipeCategoryCell() 
     cell.configureSelectedCategoryCell(selectedCategory) 
    } 
} 


class CreateRecipeVC: UIViewController, ... { 

    if selectedCategory != nil { 
     ... 
    } 

} 
+0

** 'categoriesController(didSelectCategory:)'の中の 'selectedCategory'は変数**ではありませんか? – Eendje

+0

実際には...機能の外に移動すると、「拡張機能には格納されたプロパティが含まれていない可能性があります。」というエラーが表示されます –

+0

これはすでに答えです:拡張機能でプロパティを設定することはできません。サブクラス化する必要があります。 – TPlet

答えて

2

コードのselectedCategoryは、プロパティではなくローカル変数です。

これをプロパティにしたい場合は、そのクラスのメイン定義で宣言する必要があります。現時点では、ストアドプロパティは拡張機能でサポートされていません。これは、クラスと構造体の作成方法の技術的な制限です。クラスのvtableに新しいメソッドを追加するのは簡単ですが、インスタンスのストレージのサイズを増やすことは難しいです。

関連する問題

 関連する問題