2014-07-08 3 views
-4

Я столкнулся с некоторой проблемой при написании цикла for в Swift. Может кто-нибудь угадать проблему в этомКак объявить цикл в swift?

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]; 
} 
+1

почему вы добавили эту строку кода: 'вар layerTemp: CALayer = CALayer()' ? – holex

+7

Что такое «Swift C»? –

ответ

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] 
+0

thanx. решение работает. Thanx, чтобы заставить меня понять это. –

+0

thnx для наконечника. Я уже пробовал это. Но я был тип литья элемент не массива. –

Смежные вопросы