Я не мог понять, как передать переменные с типом 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))
}
}
}