Как передать параметр в быстром контроллере в модель цели c - PullRequest
0 голосов
/ 19 января 2019

Я не мог понять, как передать переменные с типом String в файлы контроллера swift и передать их объекту, написанному в target-c. Однако, если я передаю строку непосредственно в качестве параметра, она работает просто отлично. Спасибо за вашу помощь.

Это класс задачи c ниже

#import "Message.h"

@implementation Message

- (instancetype)initWithDictionary:(NSDictionary *)dictionary
{
    self = [super init];
    if (self)
    {
        self.userID = dictionary[@"user_id"];
        self.username = dictionary[@"username"];
        self.avatarURL = dictionary[@"avatar_url"];
        self.text = dictionary[@"message"];
    }

    return self;
}

- (instancetype)initWithTestName:(NSString *)name withTestMessage:(NSString *)message withUserId:(NSString *)userId withAvatarUrl:(NSString *)url
{
    self = [super init];
    if (self)
    {
        self.userID = userId;
        self.username = name;
        self.avatarURL = url;
        self.text = message;
    }

    return self;
}

@end

и это файл контроллера swift

import UIKit

class ChatViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

private var messages = [Message]()

override func viewDidLoad() {
    super.viewDidLoad()

    // I can pass the string successfully to the messages this way
    messages.append(Message(testName: "Test", withTestMessage: "Hello", withUserId: "1", withAvatarUrl: "http://www.example.com"))

    // After successfully making Api Request, I wasn't able to pass a variable as parameter
     if let data = dic as? [String:Any]{
                    let userId = data["user_id"] as? String
                    let url = data["avatar_url"] as? String
                    let name = data["name"] as? String
                    let message = data["message"] as? String

                    self.messages.append(Message(testName: name, withTestMessage: message, withUserId: userId, withAvatarUrl: url))

                }
     } 
}
...