2015-07-03 19 views
11

Tôi khá mới viết mã Swift, vì vậy xin lỗi nếu lỗi này là câu trả lời đơn giản!Lỗi: 'Loại biểu thức không rõ ràng mà không có nhiều ngữ cảnh'

Tôi tiếp tục nhận được thông báo lỗi cho biết "Loại biểu thức không rõ ràng, không có ngữ cảnh nhiều hơn".

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) 
      } 
     } 
    } 

Tôi hiểu vấn đề là gì, tôi chỉ không chắc chắn cách khắc phục. Tôi đã nhìn thấy các câu hỏi khác về câu trả lời này, nhưng không có câu hỏi nào về việc lặp qua một mảng của AnyObject.

Cảm ơn!

Trả lời

21

Bạn có thể giúp trình biên dịch biết objects là như thế này những gì:

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

OK! Cảm ơn! –

+0

Ví dụ của tôi sử dụng lực mở rộng, đừng quên rằng điều này sẽ sụp đổ nếu bất kỳ đối tượng trong mảng không phải là một PFObject. Nếu bạn nghĩ rằng điều này có thể là trường hợp của bạn, hoặc trong bất kỳ nghi ngờ, tốt hơn sử dụng tùy chọn ràng buộc như trong câu trả lời của Tom Howard. – Moritz

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

... dấu chấm than trong mã Swift cho tôi jeebies heeby.

0

Nếu bạn đang viết một số mã thích:

for (i, view) in views { 
} 

Bạn cần phải thêm enumerated:

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

Và bây giờ nó phải làm việc.

Các vấn đề liên quan