无法将类型 [NSObject : AnyObject] 转换为字符串

Posted

技术标签:

【中文标题】无法将类型 [NSObject : AnyObject] 转换为字符串【英文标题】:Cannot convert the type [NSObject : AnyObject] to string 【发布时间】:2016-03-21 07:46:50 【问题描述】:

我在 Swift 中使用 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("&")
    

我在 "for key : String in parameters " 行中收到错误(如标题所述)。根据之前的答案'(NSObject, AnyObject)' is not convertible to 'String',我尝试将其转换为 NSString ,但没有成功。所以有人知道如何将 [NSObject:AnyObject] 转换为 string 吗?提前谢谢你。

【问题讨论】:

无法将字典转换为字符串。 但它适用于我的 Objective C 代码.. - (void)silentPostData :(NSString*) serverName serverport:(NSString*)serverPort serverurl:(NSString*)serverURL 参数:(NSMutableDictionary*)parameters urldata:(NSData*)urlData Persistence *持久 = [[持久化分配]init]; NSString *finalURL = [NSString stringWithFormat:@"https://%@:%@/%@?", serverName, serverPort, serverURL]; for(NSString *key in parameters) finalURL = [finalURL stringByAppendingString:key]; finalURL = [finalURL stringByAppendingString:@"="]; finalURL = [finalURL stringByAppendingString:[参数 objectForKey:key]]; finalURL = [finalURL stringByAppendingString:@"&"]; 您可以只编辑自己的问题,而不是在 cmets 中粘贴不可读的代码。 【参考方案1】:

就像 cmets 所说,它是一本字典,您可以通过以下方式获取字符串:

parameters.keys.flatMap  $0 as? String .forEach 
    finalURL = finalURL.stringByAppendingString($0)
    finalURL = finalURL.stringByAppendingString("=")
    finalURL = finalURL.stringByAppendingString(parameters[$0] as? String ?? "")
    finalURL = finalURL.stringByAppendingString("&")

【讨论】:

我还有个疑问,你能在这里回答吗? 当然,您可以编辑您的问题或提出一个新问题。 我无法发布该问题,因为我可以每 90 分钟发布一次。但是我会尽快将链接发送给您

以上是关于无法将类型 [NSObject : AnyObject] 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

无法将“对象”表达式转换为类型“MonoTouch.Foundation.NSObject”

无法将类型“NSMutableDictionary”的值转换为强制类型“[NSObject: AnyObject]”以用于 google ios Analytics

无法从 AppDelegate 访问 NSObject 的公共方法

未能创建本机类型“NSObject”的实例

包含 NSObject 子类时,Swift 2.0 Set 无法按预期工作

IOS - 啥是 Swift 字符类型的 ObjC NSObject 等价物?