Иногда я получаю фатальное исключение, когда пытаюсь «пометить» трек в cocoalibspotify . Я вхожу в систему с пользователем с тяжелым набором данных (сотни списков воспроизведения, но <15 отмеченных композиций). </p>
Вот как я "звезда" SPTrack
:
[[[[SPSession sharedSession] starredPlaylist] items] addObject:myTrack];
... и трассировка стека:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSArray objectsAtIndexes:]: index 12 beyond bounds [0 .. 11]'
*** Call stack at first throw:
(
0 CoreFoundation 0x01e125a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x021a1313 objc_exception_throw + 44
2 CoreFoundation 0x01da0f99 -[NSArray objectsAtIndexes:] + 633
3 Foundation 0x016a250b -[NSKeyValueArray objectsAtIndexes:] + 110
4 Foundation 0x016aaca6 NSKeyValueDidChangeByArrayMutation + 103
5 Foundation 0x01610c30 NSKeyValueDidChange + 266
6 Foundation 0x016aba95 -[NSObject(NSKeyValueObserverNotification) didChange:valuesAtIndexes:forKey:] + 123
7 Foundation 0x016a4d0e -[NSKeyValueNotifyingMutableArray addObject:] + 239
8 MyApp 0x000922cd -[PlaylistManager starTrack:] + 285
...
Кажется, что это происходит только через минуту или две после входа в систему (то есть пользовательские данные загружены), поэтому я предполагаю, что это может быть проблемой, когда данные загружены не полностью или что-то в этом роде?
Я пытался выяснить, есть ли какие-либо свойства, которые нужно наблюдать, чтобы узнать, когда все полностью загружено. Но так как массив может быть пустым (и пользователь, возможно, не помечал какие-либо треки раньше), кажется, что нет хорошего способа проверить, что все загружено ...? Кажется, что свойство loaded
SPPlaylist
ссылается на метаданные списка воспроизведения, а не на его дорожки (?).
Есть идеи?