Ios 从Objective C访问Swift数组
我有一个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类艺术家
。一个用户
可以有许多艺术家
,这种关系和这些类在下面的代码中实现
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代码中调用这些方法。