如何在Swift中将CMutablePointer <objcbool>设置为false?</objcbool>

时间:2014-06-10 13:40:39

标签: ios swift

基本上我在Swift中使用AssetsLibrary框架,我怎么能将stop指针的值修改为NO / False / 0(我甚至不知道除了它应该是什么值)?

self.library.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos), usingBlock: {(group: ALAssetsGroup!, stop: CMutablePointer<ObjCBool>) in

},
failureBlock: {(error: NSError!) in

})

我应该能够访问该值并使用unsafePointer对其进行修改,但我似乎无法正确编写闭包。

3 个答案:

答案 0 :(得分:18)

这相当于*stop = YES;

stop.withUnsafePointer { $0.memory = true }

为了使其更简洁,您可以执行以下操作:

operator infix <- {}

@infix func <- <T>(ptr: CMutablePointer<T>, value: T) {
    ptr.withUnsafePointer { $0.memory = value }
}

然后上面的那一行就变成了这样:

stop <- true

不确定是否推荐了这种风格,但是......

(您可以选择/ = - + * % < > ! & | ^ . ~中的字符来创建custom operators。)

答案 1 :(得分:9)

从Xcode 6 beta 4开始,您现在可以:

stop.memory = true

或者,如holex noted,您可以:

stop.initialize(true)

答案 2 :(得分:0)

在Swift 5中:

stop.pointee = true