Как позвонить по ссылке на кнопку в iphone - PullRequest
1 голос
/ 21 сентября 2011

Я передаю URL, когда пользователь нажимает кнопку с помощью этого метода, но мое приложение падает, и я не знаю, что я делаю неправильно.

Я написал этот код (тот, который обрабатывает соединение) в другом контроллере, который вызывается из события кнопки в первом представлении.

В частности, эта строка кода:

NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:url]cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

Выдает следующую ошибку:

/ Users / pradeepyadav / Desktop / RegexKitLiteDemo / Classes / SearchView.m: 19: 0 /Users/pradeepyadav/Desktop/RegexKitLiteDemo/Classes/SearchView.m:19: предупреждение: несовместимые типы Objective-C 'struct NSURL *' ожидаемое значение struct NSString * при передаче аргумента 1 URLWithString: от отдельного типа Objective C

Вот полный код:

- (void)LoadAirport

{    
    NSString *urlString = [NSString stringWithFormat:@"http://www.bookryanair.com/SkySales/FRSearch.aspx?AvailabilitySearchInputFRSearchView%24ButtonSubmit=Search%20For%20Flights%20&AvailabilitySearchInputFRSearchView%24DropDownListMarketDay1=<%i>&AvailabilitySearchInputFRSearchView%24DropDownListMarketDay2=<%i>&AvailabilitySearchInputFRSearchView%24DropDownListMarketDestination1=<%@>&AvailabilitySearchInputFRSearchView%24DropDownListMarketMonth1=<%i>&AvailabilitySearchInputFRSearchView%24DropDownListMarketMonth2=<%i>&AvailabilitySearchInputFRSearchView%24DropDownListMarketOrigin1=<%@>&AvailabilitySearchInputFRSearchView%24DropDownListPassengerType_ADT=1&AvailabilitySearchInputFRSearchView%24DropDownListPassengerType_CHD=0&AvailabilitySearchInputFRSearchView%24DropDownListPassengerType_INFANT=0&AvailabilitySearchInputFRSearchView%24RadioButtonFlowSelector=FlightAndCar&AvailabilitySearchInputFRSearchView%24RadioButtonMarketStructure=RoundTrip&AvailabilitySearchInputFRSearchView%24discountPax=0&__EVENTARGUMENT=&__EVENTTARGET=&__VIEWSTATE=%2FwEPDwUBMGRkg4UKvNNb1NbM14%2F2n9zUxhNQ%2B%2BA%3D&errorlist=",day,day1,DestinCode,fromDate1,fromDate2,OriginCode];
    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:url]cachePolicy:NSURLRequestUseProtocolCachePolicy
                                          timeoutInterval:60.0];
    NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
    if (theConnection) {
        webData = [[NSMutableData data] retain];
        NSLog(@"%@",webData);
    } else {

    }
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{
    //responseData = [[NSMutableData alloc] init];
    [webData setLength: 0]; 
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{
    //[responseData appendData:data];
    [webData appendData:data]; 
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{
    [connection release];
    [webData release]; 
    NSLog(@"Connection failed! Error - %@ %@",
          [error localizedDescription],
          [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
    //[textView setString:@"Unable to fetch data"];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
    loginStatus = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; 
    [connection release];
}

Ответы [ 2 ]

3 голосов
/ 21 сентября 2011

Используйте этот код для NSURLRequest.

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
3 голосов
/ 21 сентября 2011

Я уверен, что ошибка произошла из-за недостаточной концентрации ;-) Вы передаете экземпляр NSURL в качестве аргумента, где вы должны передать NSString .

На линии

NSURLRequest *theRequest = [NSURLRequest requestWithURL:...

либо установлено,

requestWithURL:url

или

requestWithURL:[NSURL URLWithString:urlString];
...