Objective-C NSURL URLWithString在使用变量时似乎失败

时间:2009-12-01 16:09:54

标签: iphone objective-c cocoa cocoa-touch

所以这是我在StackOverflow上的第一个帖子,所以请原谅我,如果我的请求不是很好。

我正在尝试将带有NSString类型的变量加载到NSURL中,其中包含以下行:

audioPlayer = [[AudioPlayer alloc] initPlayerWithURL:[NSURL URLWithString:aArchiveItem.streamURL] delegate:self];

在我使用的AudioPlayer实现中:

-(id)initPlayerWithURL:(NSURL *)url delegate:(id<AudioPlayerDelegate>) aDelegate {
    self = [super init];

    delegate = aDelegate;

    queue = [[AudioQueue alloc] initQueueWithDelegate:self];

    fileStream = [[AudioFileStream alloc] initFileStreamWithDelegate:self];
    [fileStream open];

    request = [[AudioRequest alloc] initRequestWithURL:url delegate:self];

    return self;
}

当我对URL字符串进行硬编码(例如URLWithString:@“http://www.example.com”)时,对audioPlayer的调用完美无缺,但是当尝试使用aArchiveItem.streamURL的值填充它时,它会失败...

我在这里做错了什么?

2 个答案:

答案 0 :(得分:5)

在您使用网址之前,可能您的网址有空格尝试执行以下操作:

aArchiveItem.streamURL=[aArchiveItem.streamURL stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

答案 1 :(得分:4)

使用调试器。打破你列出的第一行并评估当时“aArchiveItem.streamURL”实际上是什么。它实际上是一个格式良好的URL字符串吗?

另外,“它失败”的信息不足。究竟是什么方式?我猜你用aArchiveItem.streamURL创建的URL是nil(因为字符串无效),并且期待URL的东西是抓紧的,但这只是猜测。