我创建了一个新项目,该项目可获取歌曲的曲目,因此我尝试将SPTTracks数组传递给播放器,请在下面找到它。

    self.player = [[SPTAudioStreamingController alloc] initWithClientId:auth.clientID];
    self.player.diskCache = [[SPTDiskCache alloc] initWithCapacity:1024 * 1024 * 64];

            NSString *trackURI = @"spotify:track:1zHlj4dQ8ZAtrayhuDDmkY";

            [SPTTrack trackWithURI:[NSURL URLWithString:trackURI] accessToken:auth.session.accessToken market:@"ES" callback:^(NSError *error, id object) {
                if (!error) {
                    SPTTrack *trackInfo = object;
                    NSArray *tracks = @[trackInfo];
                    [self.player playURIs:tracks fromIndex:0 callback:^(NSError *error) {
                        if (!error) {

                        } else {
                            NSLog(@"*** Failed to play track : %@", error);
                        }
                    }];
                } else {
                    NSLog(@"Error %@", error);
                }
            }];

但是,每当我运行它时,都会崩溃。崩溃时,请在下面找到错误:
Simple Track Playback[254:24669] -[__NSCFConstantString absoluteString]: unrecognized selector sent to instance 0x1000c0508

我也曾在spotify api spotify_ios_sdk上查看过它,但发现一个开发人员已经发布了相同的问题link

如果有人解决了此类问题,请提供指导。

提前致谢。

最佳答案

不幸的是,此方法不是“等效的”,因为在 [SPTTrack trackWithURI .... 的回调内返回的SPTTrack对象的信息要少得多。

我尝试了一些解决方法,发现对我来说解决方案是

1)创建一个对SPTTrack对象的请求。

2)将该请求传递到SPRequest performRequest回调。

3)等待响应,并最终根据数据创建一个轨道(请找到下面的完整代码)。

self.player = [[SPTAudioStreamingController alloc] initWithClientId:auth.clientID];
self.player.diskCache = [[SPTDiskCache alloc] initWithCapacity:1024 * 1024 * 64];



NSString *market = [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode];
NSURLRequest *request = [SPTTrack createRequestForTrack:[NSURL URLWithString:@"spotify:track:1zHlj4dQ8ZAtrayhuDDmkY"]
                                        withAccessToken:auth.session.accessToken
                                                 market:market
                                                  error:nil];
[[SPTRequest sharedHandler] performRequest:request
                            callback:^(NSError *error, NSURLResponse *response, NSData *data) {
                            if (!error) {
                                 NSError *parsingError = nil;
                                 SPTTrack *track = [SPTTrack trackFromData:data
                                                                   withResponse:response
                                                                          error:&parsingError];

                                          self.arrURIs = @[track.playableUri];
                                          [self.player playURIs:self.arrURIs fromIndex:0 callback:nil];

                                      }
                                  }];

感谢“Kry256”的详细说明。

关于ios - SPTTrack trackWithURI问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30981015/

10-08 20:50