2014-11-12 3 views
1

Здравствуйте, я создаю переменную URL, и я получаю ошибку в этой строке.Использование неразрешенного идентификатора 'indexPath' в Swift

Вот мой полный код.

"Использование неразрешенного идентификатора 'indexPath' в Swift"

import UIKit 
import MediaPlayer 

class DetailViewController: UIViewController{ 

    var moviePlayer:MPMoviePlayerController! 
    var color = UIColor.whiteColor() 
    var name = NSString() 
    var arrayOfPrograms: NSArray = [] 

    var url = NSString() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.navigationController?.navigationBar.titleTextAttributes = 
      [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 20)!, 
       NSForegroundColorAttributeName: UIColor.whiteColor()] 
     self.navigationController?.navigationBar.tintColor = color 
     self.navigationItem.title = "TV JOJ" 

     var url = NSURL(string: (self.arrayOfPrograms.objectAtIndex(indexPath).Program).url) 
     moviePlayer = MPMoviePlayerController(contentURL: url) 

     moviePlayer.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height) 
     moviePlayer.view.sizeToFit() 
     self.view.addSubview(moviePlayer.view) 
     moviePlayer.fullscreen = true 
     moviePlayer.controlStyle = MPMovieControlStyle.Embedded 
    } 

    override func supportedInterfaceOrientations() -> Int { 
     return Int(UIInterfaceOrientationMask.Portrait.rawValue) 
    } 

} 

Я сожалею, что я Beginner ..

клетки

var arrayOfPrograms: NSArray = [] 
arrayOfPrograms = [Program(name: "Markíza", url: "http://1.com")] 

Это, как я пытаясь передать данные через segue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
     var indexPath: NSIndexPath = self.tableView?.indexPathForSelectedRow() as NSIndexPath! 
     var destinationViewController: DetailViewController 
     (segue.destinationViewController as DetailViewController).url = (self.arrayOfPrograms.objectAtIndex(indexPath.row) as Program).url 

Я хочу, чтобы этот URL-адрес откроет другое видео для каждой именованной ячейки. arraysOfPrograms - это ячейки.

+0

Вам нужно будет предоставить больше контекста области. Попробуйте опубликовать полное определение функции, которую содержит одна строка, которую вы опубликовали. –

+0

Мы не можем читать ваши мысли. Покажите нам больше кода. – radex

+1

Что вы ожидаете от 'indexPath'? В настоящее время переменная не определена нигде, это ваша ошибка. – Sulthan

ответ

0

Чтобы расширить ответ Мунди - Эти линии -

var url = NSURL(string:(self.arrayOfPrograms.objectAtIndex(indexPath).Program).url) 
    moviePlayer = MPMoviePlayerController(contentURL: url) 

Может быть написано, как это , что немного более ясно -

var url = self.arrayOfPrograms.objectAtIndex(indexPath).Program.url; 
    moviePlayer = MPMoviePlayerController(contentURL: url); 

Основная проблема заключается в том, что переменная «indexPath» не существует нигде в вашей программе, поэтому вы не сообщаете своей программе, какой индекс должен выйти из массива arrayOfPrograms.

Как сказал Муди, даже если «indexPath» был определен, NSIndexPath - это не тот тип, который вы хотели бы передать туда, так или иначе, вы должны пройти в этой строке indexPath. Так будет выглядеть так:

// this indexPath probably isn't want you want. Its just an example to illustrate my point. 
    var indexPath = NSIndexPath(forRow: 1, inSection: 0) 

    // getting the row (1) from the variable indexPath 
    var url = self.arrayOfPrograms.objectAtIndex(indexPath.row).Program.url 
    moviePlayer = MPMoviePlayerController(contentURL: url) 

Что именно вы пытаетесь сделать? Вы хотите выполнить цикл через arrayOfPrograms и создать проигрыватель фильмов для каждого элемента, который находится в этом массиве? Или это должно быть в виде таблицы и когда пользователь нажимает на определенную строку. Ответ на эти вопросы поможет вам понять, откуда должна прибыть «indexPath».

+0

Я хочу, чтобы этот URL-адрес откроет другое видео для каждой именованной ячейки. arraysOfPrograms - это ячейки. Проверьте мое редактирование. – stealmybike

0

Переменная indexPath не определена должным образом. Кроме того, для доступа к элементу массива вам нужен индекс, а не индексный путь.

Обратите внимание, что вы должны сделать две вещи, чтобы исправить это:

  1. Правильно определить или получить ссылку на NSIndexPath
  2. в objectAtIndex использования indexPath.row (или indexPath.item, если это вид коллекции). Но в Swift (и современной Objective-C), мы предпочли бы, чтобы написать

 

arrayOfPrograms[indexPath.row] 
+0

Я пробовал. Но ошибка такая же. – stealmybike

+0

Нет, вы этого не сделали.В соответствии с вашим кодом вы не указали 'indexPath' – Mundi

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