Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Правильный путь:
trackData = trackData.filter {
!([110].noteNumber == 60 && [110].duration == AKDuration(beats: 4.0))
}
Вы можете использовать getMIDINoteData()
, чтобы получить массив AKMIDINoteData
, отфильтровать ненужные ноты, а затем перезаписать музыкальную дорожку, используя replaceMIDINoteData()
с фильтрованным массивом:
// remove a C at timestamp 4.0
var trackData = myTrack.getMIDINoteData()
trackData = trackData.filter { [110].noteNumber =! 60 &&
[110].duration =! AKDuration(beats: 4.0) }
myTrack.replaceMIDINoteData(with: trackData)
[117 ] Есть и другие примеры использования getMIDINoteData()
в примере проекта MIDIFileEditAndSync .