時には、トラックを「スター」するときに致命的な例外が発生することがあります。cocoalibspotify重いデータセット(何百ものプレイリストがありますが、<のスター付きトラック)を持つユーザーでログインしています。スター付きのプレイリストにトラックを追加するときにNSArray例外が発生する
これはどのようにI "スター" 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
...
これはのみ(ログインした後2分以内に発生するようですつまりユーザーデータがロードされている)、データが完全にロードされていないか、何か問題があると思いますか?
私は、すべてが完全にロードされた時を知るために観察するべきプロパティがあるかどうかを調べようとしました。しかし、配列が空である可能性があるため(ユーザーが以前にトラックに星印を付けていない可能性があります)、すべてがロードされていることを検証する良い方法はないようです...? loaded
プロパティがSPPlaylist
の場合、そのトラック(?)ではなく、プレイリストのメタデータを参照しているようです。
アイデア?
は、あなたは私にあなたが配列「アイテム」をインスタンス化するところのコードを表示することができますか? – dbrajkovic
実際、私はもう一度それを見るようになりました。 NSMutable配列を監視しているNSArrayのインスタンスがあるようです。そして、そのエラーを生成しているNSArrayです。 NSMutableArrayではありません。 – dbrajkovic
はい、私はそれが 'cocoalibspotify'ライブラリの中で起こっていることを信じています。これは変更を扱うライブラリであり、この問題が関連しています。 https://github.com/spotify/cocoalibspotify/tree/master/commonの 'SPPlaylist.m'をチェックしてください。 –