![](/img/trans.png)
[英]Accessing UIWindow from AppDelegate.swift in Objective-C file
[英]Accessing Objective C AppDelegate String in Swift Class returns nil
我试图在/使用Swift类从ObjectiveC AppDelegate访问NSNumber值,但是它在Swift方面不断返回nil-但是它填充在Objective C类中(我相信这是由于我在Swift中调用它-即使通过代码补全找到了它-由于某种原因,在两者之间传递时仍然会丢失。
任何建议表示赞赏。
...
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)notification
{
theNotification = notification;
NSDictionary *aps = (NSDictionary *)[notification objectForKey:@"aps"];
NSNumber *chatId = [aps objectForKey:@"chatId"];
}
...
...
@property (nonatomic) NSNumber* chatId;
...
class func clientChatSendMessage(_ chatId: NSNumber, message: String, completionHandler: @escaping (Data?, NSError?) -> ()) -> URLSessionTask {
let oCchatId: AppDelegate = AppDelegate()
let chatSessionId:NSNumber = oCchatId.chatId
在您的代码中,创建新变量NSNumber *chatId = [aps objectForKey:@"chatId"];
尝试这个:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)notification
{
theNotification = notification;
NSDictionary *aps = (NSDictionary *)[notification objectForKey:@"aps"];
self.chatId = [aps objectForKey:@"chatId"];
}
编辑
正如Caleb在评论中所说
我认为AppDelegate的新实例也是一个问题。 应该使用UIApplication.shared.delegate.chatId访问它
所以你也需要改变
class func clientChatSendMessage(_ chatId: NSNumber, message: String, completionHandler: @escaping (Data?, NSError?) -> ()) -> URLSessionTask {
let oCchatId: AppDelegate = UIApplication.shared.delegate() as! AppDelegate
let chatSessionId:NSNumber = oCchatId.chatId
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.