Ios 从Objective C访问Swift数组

Ios 从Objective C访问Swift数组,ios,objective-c,arrays,swift,Ios,Objective C,Arrays,Swift,我有一个Swift类用户和一个Swift类艺术家。一个用户可以有许多艺术家,这种关系和这些类在下面的代码中实现 import UIKit class Artist: NSObject { var name: String init(name: String) { self.name = name } } class User: NSObject { var artists = [Artist]() var name: String

我有一个Swift类
用户
和一个Swift类
艺术家
。一个
用户
可以有许多
艺术家
,这种关系和这些类在下面的代码中实现

import UIKit

class Artist: NSObject {
    var name: String

    init(name: String) {
        self.name = name
    }
}

class User: NSObject {

    var artists = [Artist]()
    var name: String

    init(name: String) {
        self.name = name
    }

}

我需要能够从Objective C编辑艺术家数组。当我尝试向艺术家数组添加对象时,Xcode告诉我艺术家数组的类型为
NSArray
,无法修改。有没有办法将此数组作为NSMutableArray访问?

在目标C中,您只需将数组复制到一个可变数组:

NSMutableArray *mutableArtists = [artists mutableCopy];
[mutableArtists addObject:...]; // Add your objects to mutableArtists or make other changes.
NSArray *artistsToReturn = [mutableArtists copy];
return artistsToReturn;
或者,您可以在类定义中将Swift数组强制转换为NSMUTABLEARRY类型,如果您愿意将其作为NSMUTABLEARRY而不是具有通常的Swift mutable数组特征:

var artists : NSMutableArray = [Artist]()
在Swift中,您还可以创建数组的NSMutableArray副本,如果方便的话,您可以从Objective-C类访问该副本

var mutableArtists = NSMutableArray(artists)

你做错了。用户类之外不应该有任何代码修改艺术家数组。其他类甚至不应该知道艺术家数组的存在。添加向用户类添加/删除艺术家的方法,并从Obj-C代码中调用这些方法。