2014-09-17 6 views
1
var songList = NSMutableArray() 
var player = AVPlayer() 
var isSelected = false 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 



    var songs = MPMediaQuery() // also tried var songs = MPMediaQuery.songsQuery() 
    var localSongs: NSArray = songs.items 
    songList = NSMutableArray(array: localSongs) 

    tableView.reloadData() 

    var song: MPMediaItem = songList[0] as MPMediaItem // <<- Error here 

    var currentItem = AVPlayerItem(URL: song.valueForProperty(MPMediaItemPropertyAssetURL) as NSURL) 

    player.replaceCurrentItemWithPlayerItem(currentItem) 

    player.play() 

    var songTitle: NSString = song.valueForProperty(MPMediaItemPropertyTitle) as NSString 

    songName.text = songTitle 

    var time = Float(CMTimeGetSeconds(player.currentItem.duration)) 
    sliderOutlet.value = time 




} 

나는 음악 플레이어를 짓고 있어요하지만 응용 프로그램 걸치고을 풀기 동안 : index 0 beyond bounds for empty array을하고 난에 실행하려고하면이 말한다 iPhone : {찾을 전무 내가 시뮬레이터에서 실행이 오류 줄 때하는 옵션 값 (음악 라이브러리)

MediaLibrary} Database validation succeeded 
fatal error: unexpectedly found nil while unwrapping an Optional value 

EDIT : 내 iPhone의 로컬 음악 라이브러리에 액세스하고 노래를 배열에 추가하지 않는 것처럼 보입니다.

+1

과 같이 포장됩니다. 이는 'songList'이 비어 있다고 말합니다. 그 안에 노래가 있어야합니까? 나는 거기에서 시작할 것입니다. –

+0

MPMediaQuery()가 로컬 라이브러리에서 노래를 수집하지 않습니까? 물론 시뮬레이터에는 노래가 포함되어 있지 않습니다. – Abdou23

+0

글쎄, 당신이 진짜 문제를 찾을 때까지 다시 추적. 'songList'는 비어 있습니다. 'localSongs'도 비어 있습니다. –

답변

0

크기를 테스트하지 않고 요소에 액세스하고 있습니다. 그래서 songList [0]는 범위를 벗어났습니다. 따라서 충돌이 발생했습니다.

0

미디어 쿼리에서 항목을 반환하지 않으면 localSongssonglist은 모두 크기가 0 인 배열입니다. songList[0]으로 노래를 참조하려고하면 빈 배열에서 색인 0에 액세스하게됩니다. 그러므로 충돌.

+0

좋아요, 내 장치의 음악 라이브러리에 액세스하지 않고 배열에 노래를 추가하는 것처럼 보이므로 어떻게해야합니까? 나는 심지어 "var songs = MPMediaQuery()"를 "var songs = MPMediaQuery.songsQuey()"로 변경했습니다. – Abdou23

+0

원래 질문에 대답했다고 생각합니다. 위로 투표하고 '응답'으로 확인하십시오. – GoZoner

0

시뮬레이터에 음악이 포함될 것으로 예상되는 것과 같은 문제가있는 것 같습니다. 이후, songList.count == 0, 이는 songList [0]이 예외를 생성해야 함을 의미합니다. 기대하고 바라는 행동처럼 보입니다.

0

if 조건을 사용하여 계산을 확인하십시오. nil 일 수있는 색인에 액세스하고 있습니다. 액세스하면 런타임 오류가 발생합니다.

선호 접근 방식은 명시 적으로 ?

+0

배열이 비어 있습니다. 문제는 이제 노래를 추가하는 방법입니다. – Abdou23