基本上我在Swift中使用AssetsLibrary框架,我怎么能将stop指针的值修改为NO / False / 0(我甚至不知道除了它应该是什么值)?
self.library.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupSavedPhotos), usingBlock: {(group: ALAssetsGroup!, stop: CMutablePointer<ObjCBool>) in
},
failureBlock: {(error: NSError!) in
})
我应该能够访问该值并使用unsafePointer对其进行修改,但我似乎无法正确编写闭包。
答案 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)
答案 2 :(得分:0)
在Swift 5中:
stop.pointee = true