Note that there are some explanatory texts on larger screens.

plurals
  1. PO"Terminating app due to uncaught exception 'NSInvalidArgumentException'" error with stringByTrimmingCharactersInSet on iPhone
    primarykey
    data
    text
    <p>I am reading JSON data back from a server, and I am trying to parse a particular string that contains an HTML URL. The data is in an NSString called current_weatherIconUrl2. The console output from Xcode is below:</p> <blockquote> <p>2010-07-06 17:17:46.628 WhatToDo[13437:20b] Current Condition: URL2:("<a href="http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png" rel="nofollow noreferrer">http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png</a>")</p> </blockquote> <p>What I tried to do is use "stringByTrimmingCharactersInSet" to parse the '(', '"', and also the line feed and newlines, but I am instead getting the NSInvalidArgumentException:</p> <blockquote> <p>2010-06-30 00:18:07.357 WhatToDo[7299:20b] <strong>* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*</strong> -[NSCFArray stringByTrimmingCharactersInSet:]: unrecognized selector sent to instance 0x3e84970'</p> </blockquote> <p>Here is an extract of the data that is returned from the server (information I want to extract is bolded):</p> <pre><code>2010-07-06 17:17:46.627 WhatToDo[13437:20b] Results: { data = { "current_condition" = ( { cloudcover = 75; humidity = 42; "observation_time" = "08:47 AM"; precipMM = "0.0"; pressure = 1003; "temp_C" = 36; "temp_F" = 97; visibility = 10; weatherCode = 113; weatherDesc = ( { value = Sunny; } ); **weatherIconUrl = ( { value = "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png"; } );** winddir16Point = WSW; winddirDegree = 250; windspeedKmph = 31; windspeedMiles = 19; } ); }; } </code></pre> <p>Here is the code that parses the data into NSString variables.</p> <pre><code>- (void) readWeather { NSLog(@"readWeather started"); NSMutableArray *imageArray = [[NSMutableArray alloc] init]; NSData *jsonObjectString; NSString *completeString = [NSString stringWithFormat: @"http://www.worldweatheronline.com/feed/weather.ashx?key=988ae47cc3062016100606&amp;lat=25.04&amp;lon=121.55&amp;num_of_days=5&amp;format=json", jsonObjectString]; NSLog(@"Weather URL: %@", completeString); NSURL *urlForValidation = [NSURL URLWithString:completeString]; NSMutableURLRequest *validationRequest = [[NSMutableURLRequest alloc] initWithURL:urlForValidation]; [validationRequest setHTTPMethod:@"POST"]; NSData *responseData = [NSURLConnection sendSynchronousRequest:validationRequest returningResponse:nil error:nil]; [validationRequest release]; // Store incoming data into a string NSString *jsonString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; // Create a dictionary from the JSON string NSDictionary *results = [jsonString JSONValue]; NSLog(@"Results: %@", results); NSArray *data = [[results objectForKey:@"data"] objectForKey:@"current_condition"]; NSArray *data2 = [[results objectForKey:@"data"] objectForKey:@"weather"]; NSCharacterSet *skipSet = [NSCharacterSet characterSetWithCharactersInString:@"("]; for (NSArray *current_condition in data) { // Get title of the image NSString *temp_C = [current_condition valueForKey:@"temp_C"]; NSString *current_weatherDesc = [current_condition valueForKey:@"weatherDesc"]; NSString *current_weatherIconUrl = [current_condition valueForKey:@"weatherIconUrl"]; NSString *current_weatherIconUrl2= [current_weatherIconUrl valueForKey:@"value"]; //Commented out because this will create an exception: //NSString *current_weatherIconUrl3 = [current_weatherIconUrl2 stringByTrimmingCharactersInSet:skipSet]; //NSLog(@"Current Condition: URL2: %@", *(current_weatherIconUrl3); //Commented out because this will create an exception: //current_weatherIconUrl3 = [current_weatherIconUrl3 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; } </code></pre> <p>Can someone tell me what I am doing wrong or if there is a better method than using <code>stringByTrimmingCharactersInSet</code>?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload