相关疑难解决方法(0)

为什么我不能将Objective-C对象中的KVC用于Swift属性?

我的团队已决定新文件应该用swift编写,我发现在Objective-C对象中使用KVC在Swift对象上设置属性有一个奇怪的问题.

我的Objective-C设置了这样的属性: [textObject setValue:0.0 forKey:@"fontSize"]

我的Swift对象(textObject)具有此属性的自定义setter/getter.

   var fontSize: CGFloat? {
      get {
         return internalTextGraphic?.fontSize 
      }
      set {
            internalTextGraphic?.fontSize = newValue
      }
   }
Run Code Online (Sandbox Code Playgroud)

但是,如果我在其中设置断点set,它永远不会被击中.

我有Objective-C对象也得到同样的调用,我只是实现 -setFontSize,并执行正确.

为什么我似乎无法进入我的set方法-setValueForKey?我有100%确认textObject存在并且是正确的类型.

编辑:
马丁R是正确的,我不得不使类型不可选.这是我的工作代码:

   var fontSize: CGFloat {
      get {
         var retFontSize: CGFloat = 0.0
         if let fontSize = internalTextGraphic?.fontSize {
            retFontSize = fontSize
         }
         return retFontSize
      }
      set {
         if let textGraphic = internalTextGraphic {
            textGraphic.fontSize = newValue
         }
      }
   }
Run Code Online (Sandbox Code Playgroud)

objective-c key-value-coding kvc swift

7
推荐指数
1
解决办法
336
查看次数

标签 统计

key-value-coding ×1

kvc ×1

objective-c ×1

swift ×1