在Swift中声明一个随机数量的对象

时间:2014-12-13 04:57:33

标签: swift

我基本上试图做这个人想要做的事情,但是使用Swift:

Declaring a random amount of objects in c++

我对编程很新,对Swift来说很新,所以我对如何做一些事情有点模糊。基本上,我只是想宣布一个随机数量的敌人,我的玩家必须编织并在他击中其中一个时进行注册。我一直在寻找答案的每个地方,要么这是一个非常愚蠢的问题,所以愚蠢没有人需要把它放在互联网上,或者Sift太新了,因为它不是别人的问题。我猜这是一个愚蠢的问题,但不管我是怎么想出来的。

感谢。

4 个答案:

答案 0 :(得分:0)

Swift数组是动态的,至少是用var array声明的可变类型 因此,只要有足够的对象,就可以向对象添加对象。

例如:

var objects = [String]()

//let numberOfObjects = arc4random_uniform(10) // between 0 and 9
let numberOfObjects = arc4random_uniform(5) + 5 // between 5 and 9
for i in 0..<numberOfObjects {
    let object = String()
    objects.append(object)
}


println("we have \(countElements(objects)) objects")

答案 1 :(得分:0)

也许我太过密集而无法理解这个问题,但在我看来,简单地声明一个NSMutableArray会做你想做的事情:

let myArray:NSMutableArray = NSMutableArray()

您可以随意添加或删除对象。

在任何给定的循环中,您可以删除所有对象,然后使用随机数生成器添加一个随机数量的对象,如果这是您要执行的操作。

我对另一个答案的补充评论是,我会在生成随机数的语句中明确键入cast:

var randomNumber:Int = Int(arc4random_uniform(UInt32(5)))

答案 2 :(得分:0)

以下是使用简单Enemy类的示例:

class Enemy : NSObject {
    override init() {
        super.init()
    }
}

let range = (5, 20)
let numEnemies = Int(arc4random_uniform(UInt32(range.1 - range.0) + 1) + UInt32(range.0))
var enemyArray = [Enemy]()

for i in 0..<numEnemies {
    enemyArray.append(Enemy())
}

答案 3 :(得分:0)

您需要数组中随机数量的对象。假设:

class MyObject {}

并且你有一个对象数量的上限:

let theObjectLimit = 10

然后您只需创建一个随机数量的MyObject新的不同实例:

let theObjects = (1...arc4random_uniform(theObjectLimit)).map { 
   _ -> MyObject in return MyObject () 
}

当学习像Swift这样具有第一类函数(也就是闭包)的语言时,你会希望尽可能使用像mapreduce这样的函数 - 尤其是迭代。