質問

When I try to build my project i get the following error on line 827 /PATH_TO_PROJECT/Libs/CocoaLibSpotify/Model/SPPlaylist.m:827:25: Implicit conversion of Objective-C pointer type 'AVAssetTrack *' to C pointer type 'sp_track *' (aka 'struct sp_track *') requires a bridged cast

Here is the code where the error occurs:

805 -(void)addItems:(NSArray *)newItems atIndex:(NSUInteger)index callback:(SPErrorableOperationCallback)block {
806     
807     SPDispatchAsync(^{
808         
809         if (newItems.count == 0) {
810             dispatch_async(dispatch_get_main_queue(), ^{
811                 if (block) block([NSError spotifyErrorWithCode:SP_ERROR_INVALID_INDATA]);
812             });
813             return;
814         }
815         
816         sp_track **tracks = malloc(sizeof(sp_track *) * newItems.count);
817         
818         // libSpotify iterates through the array and inserts each track at the given index, 
819         // which ends up reversing the expected order. Defeat this by constructing a backwards
820         // array.
821         for (int currentTrack = (int)newItems.count - 1; currentTrack >= 0; currentTrack--) {
822             
823             sp_track *track;
824             id item = [newItems objectAtIndex:currentTrack];
825             
826             if ([item isKindOfClass:[SPTrack class]])
827                 track = [item track];
828             else
829                 track = [(SPTrack *)((SPPlaylistItem *)item).item track];
830             
831             tracks[currentTrack] = track;
832         }
833         sp_track *const *trackPointer = tracks;
834         
835         if (block)
836             [self.addCallbackStack addObject:block];
837         
838         sp_error errorCode = sp_playlist_add_tracks(self.playlist, trackPointer, (int)newItems.count, (int)index, self.session.session);
839         free(tracks);
840         tracks = NULL;
841         
842         NSError *error = nil;
843         if (errorCode != SP_ERROR_OK)
844             error = [NSError spotifyErrorWithCode:errorCode];
845         
846         if (error && block) {
847             [self.addCallbackStack removeObject:block];
848             dispatch_async(dispatch_get_main_queue(), ^{ block(error); });
849         }
850     });
851 }

Thanks for your help!

役に立ちましたか?

解決

The error is pretty self-explanatory - you need to make a bridged cast.

track = (__bridge sp_track *)[item track];

or

track = [(SPPlaylistItem *)item track];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top