私はカスタムクラスを持っていますが、これを拡張してストアドプロパティを追加したいと考えています。私は常にnilを取得し、デバッグ中拡張オブジェクト内に関連オブジェクトを持つストアドプロパティを設定しました
private func makeConnectionsWithParents(forArray sorce: ProductCategory) {
for var cheesItem in sorce.childCategories! {
if cheesItem.childCategories != nil {
cheesItem.parent = sorce
makeConnectionsWithParents(forArray: cheesItem)
}
}
}
が、setメソッドで、newValueには、正しく受信されています。私はそのようなこのプロパティの設定を行う
import ObjectiveC
var kSomeKey = "s"
extension ProductCategory {
var parent: ProductCategory? {
get {
return objc_getAssociatedObject(self, &kSomeKey) as? ProductCategory
}
set(newValue) {
objc_setAssociatedObject(self, &kSomeKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
print(parent ?? "not set")
}
}
}
:私のコードは、そのように見えます。 あなたは、アドバイスをしてください、この問題はどこですか?
このアプローチをUINavigationControllerのような標準的な項目に適用すると、それは適切に機能します。
はProductCategory @objCクラスであるか、NSObjectの由来? –
@ Daij-Djanその構造体です。まあ、私は問題があると思います。それで、結合されたオブジェクトの使い方で構造体を拡張することは可能ですか? – Melany