В настоящее время я могу избавиться от повторяющихся объектов в массиве, но я хочу вызвать этот массив в методе indexPath.row
, но я получаю ошибку, что переменная не определена, поскольку она объявлена в функции. Я пытался создать экземпляр как нить глобально, но это не избавляет от повторяющихся объектов.Как получить доступ к переменной, объявленной в функции?
Var myVar = [<the T type>]()
uniq(<some source>, uniqueTitle: &myVar)
func uniq<S : SequenceType, T : Hashable where S.Generator.Element == T>(source: S) -> [T] {
var buffer = [T]()
var added = Set<T>()
for elem in source {
if !added.contains(elem) {
buffer.append(elem)
added.insert(elem)
}
}
return buffer
}
//titleatcell is an array with repeating objects.
titleatcell.append(title!)
var uniqueTitle = uniq(titleatcell)
uniqueTitle.append(title!)
print(uniqueTitle)
//return count of objects in array
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = table.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
//Error: uniqueTitle is not declared.
cell.textLabel?.text = uniqueTitle[indexPath.row]
return cell
}
Попробуйте этот элемент cell.textLabel? .text = uniq (titleatcell) [indexPath.row] ' – Edman
uniq не объявлен – xxtmanxx
Вы, похоже, объявили' uniq' как вложенную функцию. Это действительно то, что вы хотели сделать? Если нет, принесите объявление 'uniq' в область вашего класса, например, прямо перед' tableView (t: cellForRowAtIndexPath:) '. – Edman