我是
Swift的初学者,我正在将应用程序迁移到Swift 3.0
“无法使用'(String)’类型的参数列表调用’value’”
它几乎显示在此代码段的每一行.
你知道它可能来自哪里吗?
非常感谢
if ((message as AnyObject).value("content") != nil){ stringContent = (message as AnyObject).value("content") as? String } if ((message as AnyObject).value("sender_uuid") != nil){ stringSenderUuid = (message as AnyObject).value("sender_uuid") as? String } if ((message as AnyObject).value("recipient_uuid") != nil){ stringRecipientUuid = (message as AnyObject).value("recipient_uuid") as! String } if ((message as AnyObject).value("date") != nil){ if let result_number = (message as AnyObject).value("date") as? NSNumber { stringDate = "\(result_number)" } else { stringDate = (message as AnyObject).value("date") as! String } }
根据要求,这里有关于消息的更多信息
class Messages: Object { dynamic var channel_name = "" dynamic var content = "" dynamic var sender_uuid = "" dynamic var recipient_uuid = "" dynamic var date = "" dynamic var message_uuid = "" override class func primaryKey() -> String? { return "message_uuid" } } let message = Messages() message.channel_name=channel_name message.content=stringContent message.sender_uuid = stringSenderUuid message.recipient_uuid = stringRecipientUuid message.date = stringDate message.message_uuid = stringUuid
这里有更多信息
// initialize with nothing var stringContent = " " var stringSenderUuid = " " var stringRecipientUuid = " " var stringDate = " " var stringUuid = " " // We check for existence in the dictionnary if (message["content"] != nil){ stringContent = message["content"] as! String } if (message["sender_uuid"] != nil){ stringSenderUuid = message["sender_uuid"] as! String } if (message["recipient_uuid"] != nil){ stringRecipientUuid = message["recipient_uuid"] as! String } if (message["date"] != nil){ if let result_number = message.value(forKey: "date") as? NSNumber { stringDate = "\(result_number)" } else { stringDate = message.value(forKey: "date") as! String } } if (message["uuid"] != nil){ stringUuid = message["uuid"] as! String }
解决方法
您可能需要将它们更改为(消息为AnyObject).value(forKey:“···”)(添加forKey:标签).
你知道应该是什么样的对象消息吗?反复将它转换为AnyObject是奇怪的.创建一个新变量会更简洁 – 让messageObject = message作为AnyObject,然后调用messageObject.value(forKey:“···”). (我怀疑你真的想把它转换成Dictionary或类似的东西,在这种情况下你可以做messageDictionary [“···”]而不是调用value(forKey :).)
此外,在Swift中,您可以执行此操作以进一步减少冗余:
if let content = messageObject.value(forKey:"content") as? String { stringContent = content }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。