从Objective C访问Swift数组

3

我有一个Swift类 User 和一个Swift类 Artist。一个 User 可以有许多 Artists,这种关系和这些类在以下代码中实现。

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来访问?


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

2
在 Objective C 中,您可以将数组直接复制到可变数组中:
NSMutableArray *mutableArtists = [artists mutableCopy];
[mutableArtists addObject:...]; // Add your objects to mutableArtists or make other changes.
NSArray *artistsToReturn = [mutableArtists copy];
return artistsToReturn;

或者,您可以在类定义中将Swift数组转换为NSMutableArray类型,如果您希望它作为NSMutableArray而不是具有通常的Swift可变数组特性运行:

var artists : NSMutableArray = [Artist]()

在Swift中,你也可以创建一个NSMutableArray的副本来代替数组,这样你就可以从你的Objective-C类中访问它,如果这更方便的话。
var mutableArtists = NSMutableArray(artists)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接