Cannot call 'value' using argument list of type '(String)'

I am starting work in Swift, and I am moving the application to Swift 3.0

I have such a mistake, and I have no idea how to solve it.

"Cannot invoke 'value' using argument list of type '(String)'"

It is displayed in almost every line of this fragment. You do not know where it came from? Many thanks

        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

            }

        }

According to the message information requested here

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

Here is even more information.

        // 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
    }
+4
source share
2 answers

You probably need to change them to (message as AnyObject).value(forKey:"···")(adding a label forKey:).

, message ? AnyObject . - let messageObject = message as AnyObject, messageObject.value(forKey:"···"). ( , Dictionary - , messageDictionary["···"] value(forKey:).)

, Swift , :

if let content = messageObject.value(forKey:"content") as? String {
  stringContent = content
}
+3

message - json-, [String:Any], .

if let dic = message as? [String:Any] {
    stringContent = dic["content"] as? String ?? ""
}

message Messages, , message.content, .

stringContent = message.content
+1

Source: https://habr.com/ru/post/1669055/


All Articles