声明 NSMutableArray 内容类型
Declare NSMutableArray content type
我有一段在 objective c 应用程序中使用过的代码,我想将其合并到新的 swift 项目中。问题是我无法理解语法!
我正在使用 FMDB 从 sql 数据库中获取有关卡片组的一些信息。当我从数据库中提取信息时,我创建了一个卡片对象,该对象具有数据库中描述的属性。当我访问数据库时,它 returns 我的卡片对象的 NSMutableArray
。我想明确声明我的可变数组包含这些对象...
我会在 objective c 中这样写:
NSMutableArray<Card*>
我在这种情况下使用它
- (NSMutableArray<Card *> *)getCardsFromDb
所以我知道我的函数正在返回 Card
对象的可变数组。我如何在 swift 中执行此操作?
目前我项目中的代码很少
//Properties
var cardArray: NSMutableArray<Card>! //How can I tell it that the array is populated with my Card object?
//View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
let databaseAccess = DatabaseAccess()
cardArray = databaseAccess.getCardsFromDatabase()
print(cardArray)
}
目前我只是将数组称为临时名称,因为我只是在测试数据库方法是否有效。我试过 NSMutableArray[Card]
和 NSMutableArray(Card)
但都没有用。
我想这样做,以便我知道在进行数据库调用时我得到的是卡片对象数组,而不仅仅是一些随机数组。
谢谢
由于您正在编写 Swift 代码,因此您应该将 cardArray
声明为:
var cardArray: [Card] = []
而不是:
var cardArray: NSMutableArray<Card>!
因为getCardsFromDatabase()
returns一个可变数组(不是Swift数组),你需要先向下转换它然后再分配给cardArray
:
override func viewDidLoad() {
super.viewDidLoad()
let databaseAccess = DatabaseAccess()
cardArray = databaseAccess.getCardsFromDatabase() as! [Card]
print(cardArray)
}
如果你想声明一个类型为 array of Card
的变量但不想将数组保存到其中,你可以使用
var cardArray: [Card]
这相当于 Objective-C
NSMutableArray<Card*> cardArray;
(或者更确切地说,Objective-C 等同于 Swift,因为 Objective-C 采用类型化数组以与 Swift 兼容。)
如果你想定义一个类型为 array of Card
的变量并将一个空白数组放入其中,你可以使用
var cardArray = [Card]()
相当于
NSMutableArray<Card*> cardArray = [NSMutableArray new];
(尽管我忘记了您是如何满足 Objective-C 中的类型要求的。Objective-C 语句可能需要稍作调整...)
我有一段在 objective c 应用程序中使用过的代码,我想将其合并到新的 swift 项目中。问题是我无法理解语法!
我正在使用 FMDB 从 sql 数据库中获取有关卡片组的一些信息。当我从数据库中提取信息时,我创建了一个卡片对象,该对象具有数据库中描述的属性。当我访问数据库时,它 returns 我的卡片对象的 NSMutableArray
。我想明确声明我的可变数组包含这些对象...
我会在 objective c 中这样写:
NSMutableArray<Card*>
我在这种情况下使用它
- (NSMutableArray<Card *> *)getCardsFromDb
所以我知道我的函数正在返回 Card
对象的可变数组。我如何在 swift 中执行此操作?
目前我项目中的代码很少
//Properties
var cardArray: NSMutableArray<Card>! //How can I tell it that the array is populated with my Card object?
//View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
let databaseAccess = DatabaseAccess()
cardArray = databaseAccess.getCardsFromDatabase()
print(cardArray)
}
目前我只是将数组称为临时名称,因为我只是在测试数据库方法是否有效。我试过 NSMutableArray[Card]
和 NSMutableArray(Card)
但都没有用。
我想这样做,以便我知道在进行数据库调用时我得到的是卡片对象数组,而不仅仅是一些随机数组。
谢谢
由于您正在编写 Swift 代码,因此您应该将 cardArray
声明为:
var cardArray: [Card] = []
而不是:
var cardArray: NSMutableArray<Card>!
因为getCardsFromDatabase()
returns一个可变数组(不是Swift数组),你需要先向下转换它然后再分配给cardArray
:
override func viewDidLoad() {
super.viewDidLoad()
let databaseAccess = DatabaseAccess()
cardArray = databaseAccess.getCardsFromDatabase() as! [Card]
print(cardArray)
}
如果你想声明一个类型为 array of Card
的变量但不想将数组保存到其中,你可以使用
var cardArray: [Card]
这相当于 Objective-C
NSMutableArray<Card*> cardArray;
(或者更确切地说,Objective-C 等同于 Swift,因为 Objective-C 采用类型化数组以与 Swift 兼容。)
如果你想定义一个类型为 array of Card
的变量并将一个空白数组放入其中,你可以使用
var cardArray = [Card]()
相当于
NSMutableArray<Card*> cardArray = [NSMutableArray new];
(尽管我忘记了您是如何满足 Objective-C 中的类型要求的。Objective-C 语句可能需要稍作调整...)