2015-07-03 3 views
11

Я довольно новичок в кодировании Swift, поэтому, пожалуйста, извините меня, если эта ошибка является простым ответом!Ошибка: «Тип выражения неоднозначен без дополнительного контекста»

Я продолжаю получать сообщение об ошибке, в котором говорится: «Тип выражения неоднозначен без дополнительного контекста».

var findTimelineData: PFQuery = PFQuery(className: "Sweets") 
    findTimelineData.findObjectsInBackgroundWithBlock { 
     (objects:[AnyObject]?, error:NSError?) -> Void in 

     if error == nil { 
      for object:PFObject in objects! { // ----This is the error line--- 
       self.timelineData.addObject(object) 
      } 
     } 
    } 

Я понимаю, в чем проблема, я просто не уверен, как это исправить. Я видел другие вопросы об этом ответе, но никто не пропустил через массив AnyObject.

Спасибо!

ответ

21

Вы можете помочь компилятору знать, что objects как это:

for object in objects as! [PFObject] { 
    self.timelineData.addObject(object) 
} 
+0

Получил это сейчас! Благодаря! –

+0

В моем примере используется принудительная развертка, не забывайте, что это произойдет, если какой-либо объект в массиве не является PFObject. Если вы считаете, что это может быть ваш случай или, во всяком случае, лучше использовать необязательное связывание, как в ответе Тома Ховарда. – Moritz

2
if let pfObjects = objects as? [PFObject] 
{ 
    for pfObject in pfObjects 
    { 
     self.timelineData.addObject(pfObject) 
    } 
} 

... восклицательные в Swift код дать мне heeby jeebies.

0

Если вы пишете код любит:

for (i, view) in views { 
} 

Вам нужно добавить enumerated:

for (i, view) in views.enumerated() { 
} 

И теперь он должен работать.