Chatto icon indicating copy to clipboard operation
Chatto copied to clipboard

Can't access model object data outside the alamofire request scope while populating api data

Open bhorvinayak opened this issue 6 years ago • 0 comments

import Foundation import Chatto import ChattoAdditions import SwiftyJSON import Alamofire

class DemoChatMessageFactory {

public static var chats = ChatModel

class func makeMessage(_ uid:String) -> DemoTextMessageModel{ print("uid makeMessage : (uid)") return self.makeMessageData(uid, isIncoming:false) }

class func makeMessageData(_ uid: String,isIncoming:Bool) -> DemoTextMessageModel{

if isIncoming == true{

return self.makeTextFinalMessage(uid, isIncoming:isIncoming)

} else {

return self.makeTextFinalMessage(uid, isIncoming: isIncoming)

}

} public class func makeTextMessage(_ uid: String, isIncoming: Bool,text:String) -> DemoTextMessageModel {

let messageModel = self.makeMessageModel(uid, isIncoming: isIncoming, type: TextMessageModel<MessageModel>.chatItemType)

let textMessageModel = DemoTextMessageModel(messageModel:messageModel, text: text)

return textMessageModel

}

public class func makeTextFinalMessage(_ uid: String, isIncoming: Bool) -> DemoTextMessageModel {

var text = String()
var uidInt  = Int(uid)

print("string uid 121 \(uid)")
print("print is Incomming data or not 1: \(isIncoming)")
print("uid count :\(uid.count)")
let urlString = "[My message Api]"

Alamofire.request(urlString, method: .get).validate().responseJSON { 
(response) -> Void in
    if let value = response.data {

    do {
     let json = try JSON(data: value)
     if let dictionnary = json.dictionaryObject {
     if let messageArray = dictionnary["message"] as?[[String: Any]]
     {

                    self.chats.removeAll()
                    for arr in messageArray {


                   self.chats.append(ChatModel(ChatListJSON: arr))

                    }


                }

            }


        }catch {
            print("cannot convert to Json")
        }



    }


    print("print int 122 : \(uidInt!)")
    print("Chat List Id DemoChatMessageFactory \(self.chats[uidInt!].chatId)")
    print("chat message: \(String(describing: uidInt!)) th \(self.chats[uidInt!].chatMessage)")
    self.textData = "\(self.chats[uidInt!].chatMessage)"

    self.makeTextMessage(uid, isIncoming: isIncoming, text:self.textData) //Here I am bale to pass textData but ouside the Alamofire block can't access
}

//Here getting empty values
print("uid makeTextFinalMessage \(uid)")
print("in coming makeTextFinalMessage \(isIncoming)")
print("text makeTextFinalMessage \(text)")

//chat count also getting zero count 
print("chat count final text\(chats.count)")



print("print chat count : \(self.chats.count)")

return self.makeTextMessage(uid, isIncoming: isIncoming, text:self.textData)

}

bhorvinayak avatar Jul 15 '18 15:07 bhorvinayak