【问题标题】:Accessing Swift Arrays From Objective C从 Objective C 访问 Swift 数组
【发布时间】:2015-01-11 23:45:32
【问题描述】:

我有一个 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 访问?

【问题讨论】:

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

标签: ios objective-c arrays swift


【解决方案1】:

在 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)

【讨论】:

    猜你喜欢
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多