【问题标题】:mutate swift array from objc?从objc变异swift数组?
【发布时间】:2015-10-02 05:16:13
【问题描述】:

给定以下类

@objc class Foo: NSObject {
  var myArray = [Bar]()
}

我想从 objc 添加到数组变量。

Foo* foo = [[Foo alloc] init];
[foo.myArray addObject: bar];

myArray 类型为 NSArray 而不是 NSMutableArray,因此没有方法 addObject。

【问题讨论】:

  • 当你尝试时会发生什么?
  • @AshleyMills:我加了一句

标签: ios objective-c swift


【解决方案1】:

怎么样:

@objc class Foo: NSObject {
  var myArray = [Bar]()

  func addBar(newBar: Bar) {
    myArray.append(newBar)
  }
}

然后

Foo* foo = [[Foo alloc] init];
[foo addBar: bar];

根据Law of Demeter,这是更好的编写方式,因为您没有访问foo 属性上的方法

【讨论】:

    【解决方案2】:

    你也可以试试这个:

    @objc class Foo: NSObject {
        var myArray = NSMutableArray()
    }
    

    然后从 Objective-C:

    Foo *foo = [[Foo alloc] init];
    [foo addBar:bar];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多