2016-10-17 2 views
0

Я возвращаюсь к использованию CloudKit, и в проекте, который я пересматриваю, у меня есть выборка запроса, и я остался с массивом CKRecords. Я устанавливаю этот массив для отображения через TableController. В любом случае, у меня есть одна строка кода (которая работает) ... но я просто не уверен, почему я устанавливаю indexPath как NSIndexPath.код с участием indexPath & NSIndexPath работает - но почему он избыточен?

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "dining") as! table1cell 
    let restaurant: CKRecord = categories[(indexPath as NSIndexPath).row] 
    cell.Name.text = restaurant.value(forKey: "Name") as? String 

    return cell 

С моими другими не CKRecord проектами TableController, я знаю, что я не должен установить indexPath себе, в сущности. Что мне здесь не хватает?

+0

Укажите некоторый контекст. Где эта строка кода? Покажите, как объявляется 'indexPath'. – rmaddy

+0

Также уточните, используете ли вы Swift 2 или 3. – rmaddy

+0

это быстро. 3. – jonpeter

ответ

2

использование отливки до NSIndexPath бессмысленно. Просто измените линию на:

let restaurant: CKRecord = categories[indexPath.row] 
0

Если indexPath не хранится в явно типизированном var, вы, вероятно, произвели его, чтобы избежать сообщения компилятора. Если компилятор не знает, что indexPath имеет тип NSIndexPath, доступ к свойству .row, вероятно, вызовет ошибку.

Где вы объявляете/храните indexPath? Что происходит, когда вы удаляете листинг NSIndexPath?

Edit: перечитывая свой вопрос, я считаю, что ответ:

«Вы не хранить indexPath как самого себя, вы бросаете все, что хранится в indexPath быть типа NSIndexPath»