2015-09-21 2 views
2

Я не хватает репутации размещать изображенияAnyObject не имеет член с именем генератор

Проблема заключается в том, когда я сделал следующее

for object in objects { eg: ....

// [AnyObject] does not have a member named generator - It shows me this error

}

И после моего поиска в StackOverflow и некоторых других сайтах Я сделал это:

if objects?.count > 0 { 

for object in objects! { 

self.resultsUsernameArray.append(object.username) -> The error is "Cannot invoke append with an argument list of type (String?!)" 

} 

} else { 

} 

[AnyObject] не имеет генератор член с именем || не может ссылаться на добавление со списком аргументов типа (String?!)

import UIKit 

var userName = "" 

class UsersViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

@IBOutlet weak var resultsTable: UITableView! 

var resultsUsernameArray = [String]() 
var resultsProfileNameArray = [String]() 
var resultsImageFiles = [PFFile]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let theWidth = view.frame.size.width 
    let theHeight = view.frame.size.height 

    resultsTable.frame = CGRectMake(0, 0, theWidth, theHeight - 64) 

    userName = PFUser.currentUser()!.username! 

} 



override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 

    let predicate = NSPredicate(format: "username !="+userName+"'") 
    var query = PFQuery(className: "_User", predicate: predicate) 

    var objects = query.findObjects() 

    for object in objects { // [AnyObject] does not have a member named generator 

     self.resultsUsernameArray.append(object.username) 
     self.resultsProfileNameArray.append(object["profileName"] as! String) 
     self.resultsImageFiles.append(object["photo"] as! PFFile) 

     resultsTable.reloadData() 

    } 

} 

func tableView(tableView: UITableView, numberOfRowsInSection eg..... { 
} 

Помогите мне пожалуйста

ответ

0

Попробуйте

if let username = object.username as String! { 
    self.resultsUsernameArray.append(username) 
} 
+1

Нет! не работает. Он показывает «Не могу вызвать append с помощью списка аргументов типа (String ?!)« То же самое снова –

+0

Я отредактировал мой ответ, попробуйте, что один – r4id4

+0

Это показывает мне эту ошибку: Downcast from 'String ?! to 'String' только разворачивает опции; Ты хотел использовать «!!»? –

0

query.findObjects() производит [AnyObject]? (т.е. optional, который может быть [AnyObject]). Итак, если результат от query.findObjects() равен nil, он не соответствует протоколу Generator. Итак, сначала проверьте, равен ли ваш результат нулю, а затем разверните его.

Ваша другая проблема относительно self.resultsUsernameArray.append(object.username) что object теперь является AnyObject и что он не имеет имя свойства username. Сначала вам нужно сдать object в PFUser, а затем использовать свойство username.

var objects = query.findObjects() 
if objects != nil { // or use objects.count > 0 
    for object in objects! { 
     if let user = object as? PFUser { 
      resultsUsernameArray.append(user.username!) 
      ... 
     } 
    } 
} 
Смежные вопросы