来自objc的mutate swift数组?

时间:2015-10-02 05:16:14

标签: ios objective-c swift

给出以下课程

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

我想从objc添加数组变量。

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

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

2 个答案:

答案 0 :(得分:3)

怎么样:

@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

属性上的方法

答案 1 :(得分:0)

你也可以试试这个:

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

然后从Objective-C:

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