我在Swift中编写for循环时遇到了一些问题.任何人都可以猜到这个问题
var sublayers : Array <AnyObject>= [self.previewLayer.sublayers]
var subLayersCount: NSInteger = sublayers.count, currentSublayer = 0
var featuresCount :NSInteger = features.count, currentFeature = 0;
CATransaction.begin()
CATransaction.setValue(kCFBooleanTrue, forKey: kCATransactionDisableActions)
var layerTemp : CALayer = CALayer()
for layerTemp in sublayers{
if(layerTemp.name == "FaceLayer"){
layerTemp.hidden = true
}
Run Code Online (Sandbox Code Playgroud)
我试图检查子层中的图层.
layertemp是CAlayer和sublayers是的AnyObject.
它给了我一个错误:
Constant layerTemp is inferred to be of AnyObject which is unexpected.
任何人都可以对此有所了解.
obj-c中的等价代码是:
NSArray *sublayers = [NSArray arrayWithArray:[self.previewLayer sublayers]];
NSInteger sublayersCount = [sublayers count], currentSublayer = 0;
NSInteger featuresCount = [features count], currentFeature = 0;
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
// hide all the face layers
for ( CALayer *layer in sublayers ) {
if ( [[layer name] isEqualToString:@"FaceLayer"] )
[layer setHidden:YES];
}
Run Code Online (Sandbox Code Playgroud)
尝试更换
var layerTemp : CALayer = CALayer()
for layerTemp in sublayers{
Run Code Online (Sandbox Code Playgroud)
同
//for layerTemp in sublayers as CALayer[] { // No longer works after Beta 3...
for layerTemp in sublayers as [CALayer] { // New sugar
Run Code Online (Sandbox Code Playgroud)
诀窍是你必须转换数组,而不是元素,其类型将始终被推断.这将不工作:
for layerTemp as CALayer in sublayers { // doesn't compile
Run Code Online (Sandbox Code Playgroud)
虽然因类型安全而无法使用:
for layerTemp:CALayer in sublayers { // fails if sublayers is not [CALayer]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1335 次 |
| 最近记录: |