我在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
}
我正在尝试检查子图层中的图层。
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];
}
答案 0 :(得分:5)
尝试替换
var layerTemp : CALayer = CALayer()
for layerTemp in sublayers{
与
//for layerTemp in sublayers as CALayer[] { // No longer works after Beta 3...
for layerTemp in sublayers as [CALayer] { // New sugar
诀窍是你必须转换数组,而不是元素,它的类型总是被推断出来。这将不工作:
for layerTemp as CALayer in sublayers { // doesn't compile
虽然由于类型安全而无效:
for layerTemp:CALayer in sublayers { // fails if sublayers is not [CALayer]