标签: swift-array

监视对数组对象的更改

我根本不知道这是否可行,但它会让我免受很多压力和糟糕的代码.是否有可能在阵列更新时进行监控?例如,方法A将数组更改a=[1,2,3]a=[1,2,3,4],是否有可能在a更新时触发某种委托?

swift swift-array

15
推荐指数
1
解决办法
5257
查看次数

如何将NSSet转换为[String]数组?

我有一个NSSet of Strings,我想把它转换成[String].我怎么做?

nsset swift swift-array

7
推荐指数
2
解决办法
9595
查看次数

有效地将Swift Array复制到iOS Metal的内存缓冲区

我正在使用Apple的新Metal框架编写iOS应用程序.我有一个Matrix4对象数组(参见Ray Wenderlich的教程),我需要通过MTLDevice.newBufferWithLength()方法传入着色器.Matrix4对象正在利用Apple的GLKit(它包含一个GLKMatrix4对象).

我正在利用GPU调用实例化.

我稍后会将其更改为一个结构,其中包含每个实例的更多数据(不仅仅是Matrix4对象).

  1. 如何有效地将[Matrix4]对象数组复制到此缓冲区中?

  2. 有一个更好的方法吗?再次,我将扩展它以使用未来更多数据的结构.

以下是我的代码的子集:

let sizeofMatrix4 = sizeof(Float) * Matrix4.numberofElements()

// This returns an array of [Matrix4] objects.
let boxArray = createBoxArray(parentModelViewMatrix)

let sizeOfUniformBuffer = boxArray.count * sizeOfMatrix4
var uniformBuffer = device.newBufferWithLength(sizeofUniformBuffer, options: .CPUCacheModeDefaultCache)
let bufferPointer = uniformBuffer?.contents()

// Ouch - way too slow.  How can I optimize?
for i in 0..<boxArray.count
{
    memcpy(bufferPointer! + (i * sizeOfMatrix4), boxArray[i].raw(), sizeOfMatrix4)
}

renderEncoder.setVertexBuffer(uniformBuffer, offset: 0, atIndex: 2)
Run Code Online (Sandbox Code Playgroud)

注意:boxArray [i] .raw()方法在Objective-C代码中定义如下:

- (void *)raw {
    return glkMatrix.m; …
Run Code Online (Sandbox Code Playgroud)

ios swift swift-array metal

6
推荐指数
1
解决办法
4488
查看次数

不能下标'[AnyObject]类型的值吗?索引类型为"UInt32"

下面代码的目标是这样 - 从调用的parse.com类中获取所有对象OnlineUsers,然后在0和之间找到一个RANDOM数results.count,然后使用该对象.

问题是,当我尝试将对象放在位置时results[randomNumber],我得到下面的错误.如果我results[randomNumberCast]在下面尝试,我会得到同样的错误.

我怎么解决这个问题?

func findRandomOnlineUser() {
    if PFUser.currentUser() != nil {
        var user1 = PFUser.currentUser()
        var user2 = PFUser()



        //find user2, i.e. some user who is online right now
        //Showing OnlineUsers only
        let onlineUsersQuery = PFQuery(className: "OnlineUsers")
        onlineUsersQuery.findObjectsInBackgroundWithBlock({ (results:[AnyObject]?, error:NSError?) -> Void in

            if results!.count > 0 {
                self.mLog.printToLog("launchChatwithRandomUser() -- There are more than zero objects in OnlineUsers")

                //help: http://stackoverflow.com/questions/26770730/apple-swift-placing-a-variable-inside-arc4random-uniform
                let randomNumber = arc4random_uniform(UInt32(results!.count))
                var randomNumberCast = Int(randomNumber) …
Run Code Online (Sandbox Code Playgroud)

casting ios swift swift-array

3
推荐指数
1
解决办法
6645
查看次数

如何在swift中为数组分配一个数字片段

x 是一个包含一个名为point的数组的对象.

x实现下标运算符,这样你就可以做一些事情,比如x[i]得到数组的第i个元素(类型为T,通常是Int或Double).

这就是我想要做的:

 x[0...2] = [0...2]
Run Code Online (Sandbox Code Playgroud)

但是我收到的错误ClosedInterval<T>是无法转换为Int/Double.

EDIT1:

这是我的对象x:

let x = Point<Double>(dimensions:3)
Run Code Online (Sandbox Code Playgroud)

对于踢腿和咯咯:定义x[1.0,2.0,0.0]

我可以n通过获得第一个元素x[0...2].

我想知道的是如何一举更新x [0 ... 2]以保持[0.0,0.0.0.0].直觉上,我想做x[0...2] = [0...2].这在答案中可以看出不起作用.我想在x没有迭代的情况下更新(在我的最后)并隐藏x不是数组的事实(即使它不是).

swift swift-array

2
推荐指数
1
解决办法
1612
查看次数

Swift:数组内的字典

数据:

[
    { firstName: "Foo", lastName: "Bar" },
    { firstName: "John", lastName: "Doe" }
]
Run Code Online (Sandbox Code Playgroud)

如何使用 swift 数组和字典拥有这种结构?该数据显示数组内的字典,对吧?所以我建议:

var persons:Array = [Dictionary<String, String>()]
Run Code Online (Sandbox Code Playgroud)

但这给了我错误:

Cannot convert the expressions type () to type Array<T>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

swift swift-dictionary swift-array

1
推荐指数
1
解决办法
9998
查看次数

有没有办法在Swift中初始化一个数组,以获得某些Type T的重复值

在我的init函数中,我有:

 self.x = [T](count: dimensions, repeatedValue: 0)
Run Code Online (Sandbox Code Playgroud)

这不起作用.我如何让它工作.

我希望x是一个类型为T的数组,它被初始化为0.(T直观地像Int,但可能是其他数字表示.)

generics swift swift-array

1
推荐指数
1
解决办法
2485
查看次数

Swift:字典数组在初始化后计数为1但应该为0

var persons = [Dictionary<String, String>()]
println(persons.count)
Run Code Online (Sandbox Code Playgroud)

打印1.我看到数组在初始化时有一个空字典,但有没有办法避免它并且有0个元素而不是1?后来我需要能够做到:

persons.append(["firstName": "Foo", "lastName": "Bar"])
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

swift ios8 swift-dictionary swift-array xcode6.1

0
推荐指数
1
解决办法
202
查看次数

标签 统计

swift ×8

swift-array ×8

ios ×2

swift-dictionary ×2

casting ×1

generics ×1

ios8 ×1

metal ×1

nsset ×1

xcode6.1 ×1