有时,尝试在cocoalibspotify中“加注星标”时会遇到致命异常。我正在使用一个具有大量数据集的用户登录(数百个播放列表,但
这就是我如何为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
    ...


这似乎只是在登录后的一两分钟内发生(即加载了用户数据),所以我猜测这可能是数据未完全加载或其他问题?

我试图找出是否有要观察的属性,以便找出何时全部加载完毕。但是由于数组可能是空的(并且用户之前可能没有加星标),因此似乎没有验证所有内容已加载的好方法……? loadedSPPlaylist属性似乎是指播放列表元数据,而不是其曲目(?)。

有任何想法吗?

最佳答案

您正在获得So看来您不应该直接操作该数组。而是调用[myTrack setStarred:YES];

基本上,我只是遍历了整个Spotify API,供您查找答案。

关于ios - 将轨道添加到已加星标的播放列表时,NSArray异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9523497/

10-11 19:38