1

I have this code in Swift using Xcode 7.2 ..

func silentPostData(serverName: String, serverport serverPort: String, serverurl serverURL: String, parameters: [NSObject : AnyObject], urldata urlData: NSData) {
    let persist = Persistence()
    var finalURl = "https://\(serverName):\(serverPort)/\(serverURL)"
    for key : String in parameters  {
        finalURL = finalURL.stringByAppendingString(key)
        finalURL = finalURL.stringByAppendingString("=")
       finalURL = finalURL.stringByAppendingString((parameters[key] as! String))
        finalURL = finalURL.stringByAppendingString("&")
    }
}

I get an error(mentioned as the title) in the line "for key : String in parameters {" . Based on the previous answer '(NSObject, AnyObject)' is not convertible to 'String' , i tried casting it to NSString , but it didn't work.So Anyone knows how to convert [NSObject:AnyObject] to string ? Thank You in advance.

6
  • It's not possible to convert a dictionary into a string. Commented Mar 21, 2016 at 7:49
  • But it works in my Objective C code.. Commented Mar 21, 2016 at 7:54
  • - (void) silentPostData :(NSString*) serverName serverport:(NSString*)serverPort serverurl:(NSString*)serverURL parameters:(NSMutableDictionary*)parameters urldata:(NSData*)urlData { Persistence *persist = [[Persistence alloc]init]; NSString *finalURL = [NSString stringWithFormat:@"https://%@:%@/%@?", serverName, serverPort, serverURL]; Commented Mar 21, 2016 at 7:55
  • for(NSString *key in parameters) { finalURL = [finalURL stringByAppendingString:key]; finalURL = [finalURL stringByAppendingString:@"="]; finalURL = [finalURL stringByAppendingString:[parameters objectForKey:key]]; finalURL = [finalURL stringByAppendingString:@"&"]; Commented Mar 21, 2016 at 7:55
  • 1
    You can just edit your own question instead of pasting the unreadable code in the comments. Commented Mar 21, 2016 at 8:03

1 Answer 1

1

Like the comments said, it's a dictionary and you could get the strings by doing this:

parameters.keys.flatMap { $0 as? String }.forEach {
    finalURL = finalURL.stringByAppendingString($0)
    finalURL = finalURL.stringByAppendingString("=")
    finalURL = finalURL.stringByAppendingString(parameters[$0] as? String ?? "")
    finalURL = finalURL.stringByAppendingString("&")
}
Sign up to request clarification or add additional context in comments.

3 Comments

I have another doubt , can you answer it here ?
Sure, you can edit your question or make a new question.
I ain't able to post that question as I can post once in every 90 minutes.. however i will send u the link asap

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.