2016-09-23 3 views
1

Я пытаюсь вернуть массив строк в закрытии Swift 3. Я получаю ошибку Generic parameter 'Element' could not be inferred, когда я пытаюсь вернуть массив. Вот соответствующий код:Общий параметр «Элемент» не может быть выведен. Быстрое закрытие

Определить замыкание функции:

var userArray: [String] = [] 
func getUsers(_ userID: String, closure:(([String]) -> Void)?) -> Void{ 
    userArray.append(user as String) 
    closure!(userArray) 
    } 
} 

Возвращение массива:

_ = self.getUsers(userID!, closure: { (userArray) in //Generic parameter error... 
     self.users.append(userArray) 
    }) 

Что я делаю неправильно?

Спасибо!

+0

Что такое 'userArray',' user' и 'users'? – Aaron

+0

'var userArray: [String] = []', не так ли? –

+0

Извините. Я оставил код, чтобы он не подавил людей. userArray - это массив строк. user - это String, а self.users также является массивом строк. – winston

ответ

3

У вас есть несколько ошибок кодирования. Следующие компиляции (даже если это может или не может соответствовать целям вашего кода).

1> var userArray: [String] = [] 
    2. func getUsers(_ user: String, closure:(([String]) -> Void)?) -> Void { 
    3. userArray.append(user) 
    4. closure?(userArray) 
    5. } 
userArray: [String] = 0 values 

11> var users : [String] = [] 
12. getUsers("me", closure: { (userArray : [String]) in 
13.   users += userArray 
14.  }) 
users: [String] = 1 value { 
    [0] = "me" 
} 
+0

'userArray: [String]' это то, что исправлено! Добавление типа данных, похоже, делало трюк. Благодаря! – winston

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