2016-01-08 3 views
-1

Я использую UITtableView, и когда я нажимаю на конкретный UIButton в определенном UITableViewCell, я хочу получить некоторые данные. Так вот мой код в cellForRowAtIndexPath[__NSCFString objectAtIndex:]: непризнанный селектор, отправленный в экземпляр

cell1.btndelete.tag = indexPath.row 
     cell1.btndelete.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside) 

в этой функции я получаю perticualr insex

func buttonClicked(sender:UIButton) { 
    let dic = downloadeddata.objectAtIndex(0) as! NSDictionary 
    print(dic) 


    let buttonRow = sender.tag 
    print(buttonRow) 
    let index:Int? = Int(buttonRow) 

    let filepath = dic["path"]?.objectAtIndex(index!) 
    print(filepath) 
} 

Но пока я получаю данные в filepath его выдаст ошибку

[__NSCFString objectAtIndex:]: непризнанный селектор, отправленный в экземпляр, в чем проблема?

Это мой массив (downloadeddata) данные:

( 
     { 
     content = ""; 
     file = "http://radio.spainmedia.es/wp-content/uploads/2015/12/tailtoddle_lo4.mp3"; 
     image = "http://radio.spainmedia.es/wp-content/uploads/2015/12/forbes.jpg"; 
     number = 0001; 
     path = "/Users/itechnotion-mac1/Library/Developer/CoreSimulator/Devices/4785CE7B-7642-45BF-A2E1-7C8FCF7986F9/data/Containers/Data/Application/500EC1B3-E2A4-469E-BF41-9FBE30313BBA/Documents/podcasts/forbes/tailtoddle_lo4.mp3"; 
     subtitle = "Titular forbes"; 
     title = "Forbes 1"; 
    }, 
     { 
     content = "En este primer programa se tratar\U00e1n asuntos tan importante como este y aquel sin descuidar un poco de todo lo dem\U00e1s"; 
     file = "http://radio.spainmedia.es/wp-content/uploads/2015/12/ogilvy.mp3"; 
     image = "http://radio.spainmedia.es/wp-content/uploads/2015/12/tapas.jpg"; 
     number = 0001; 
     path = "/Users/itechnotion-mac1/Library/Developer/CoreSimulator/Devices/4785CE7B-7642-45BF-A2E1-7C8FCF7986F9/data/Containers/Data/Application/500EC1B3-E2A4-469E-BF41-9FBE30313BBA/Documents/podcasts/tapas/ogilvy.mp3"; 
     subtitle = Titulareando; 
     title = "Tapa 1"; 
    } 
) 

Каждый раз, когда я пытаюсь, я получаю тот же результат.

+0

Возможный дубликат [непризнанным селектор послал к экземпляру] (http://stackoverflow.com/questions/2455161/unrecognized-selector-sent-to- экземпляр) – Cristik

ответ

1

dic["path"]? возвращает строку, а не массив.

+0

отредактировал мой qoestion и опубликовал данные массива. @anoopvaidya – Govind

+0

Я знаю это, но каждый раз я получаю эту строку «tailtoddle_lo4.mp3», даже когда я нажимал на ogilvy.mp3. Я получаю эту строку «tailtoddle_lo4.mp3» – Govind

1

Эта строка dic["path"]?.objectAtIndex(index!) сбрасывает ошибку, потому что dic["path"] возвращает строку, а не массив. Если вам нужен массив, используйте [dic allKeys]/[dic allValues].

Доступ к button.tag затем перейдите то, что tag значение index, тогда вы получите string. Чтобы получить доступ к использованию значения пути [dic objectForKey:@"path"];

func buttonClicked(sender:UIButton) { 
    let dic = downloadeddata.objectAtIndex(sender.tag) as! NSDictionary 
    print(dic) 

    let filepath = dic["path"] 
    print(filepath) 
} 
+0

, но я хочу, чтобы строка – Govind

+0

поблагодарила человека за его работу для меня – Govind

0

вы уже используется indxPath.row для retrive DIC объект из этого массива так DIC содержит только

{ 
     content = ""; 
     file = "http://radio.spainmedia.es/wp-content/uploads/2015/12/tailtoddle_lo4.mp3"; 
     image = "http://radio.spainmedia.es/wp-content/uploads/2015/12/forbes.jpg"; 
     number = 0001; 
     path = "/Users/itechnotion-mac1/Library/Developer/CoreSimulator/Devices/4785CE7B-7642-45BF-A2E1-7C8FCF7986F9/data/Containers/Data/Application/500EC1B3-E2A4-469E-BF41-9FBE30313BBA/Documents/podcasts/forbes/tailtoddle_lo4.mp3"; 
     subtitle = "Titular forbes"; 
     title = "Forbes 1"; 
    } 

теперь вы только нужно принести что путь строку для выпо

так dic["path"] вернет вам строку. так что просто написать let filepath = dic["path"] as! String
согласно, что ваш конечный результат, как

func buttonClicked(sender:UIButton) { 
    let dic = downloadeddata.objectAtIndex(0) as! NSDictionary 
    print(dic) 


    let buttonRow = sender.tag 
    print(buttonRow) 
    let index:Int? = Int(buttonRow) 

    let filepath = dic["path"] as! String 
    print(filepath) 
} 
Смежные вопросы