Ios 访问Swift类中的Objective C AppDelegate字符串返回nil

Ios 访问Swift类中的Objective C AppDelegate字符串返回nil,ios,objective-c,swift,nsnumber,Ios,Objective C,Swift,Nsnumber,我试图在Swift类中/使用Swift类从ObjectiveC AppDelegate访问NSNumber值,但它在Swift端连续返回nil,但它在Objective C类中填充(我相信这是由于我在Swift中如何调用它——尽管它是使用代码完成的——出于某种原因,它在两者之间传递时仍然会丢失) 如有任何建议,我们将不胜感激 目标C.m: 目标C.h: 斯威夫特: 在代码中创建新变量NSNumber*chatId=[aps objectForKey:@“chatId”]; 试试这个: - (vo

我试图在Swift类中/使用Swift类从ObjectiveC AppDelegate访问NSNumber值,但它在Swift端连续返回nil,但它在Objective C类中填充(我相信这是由于我在Swift中如何调用它——尽管它是使用代码完成的——出于某种原因,它在两者之间传递时仍然会丢失)

如有任何建议,我们将不胜感激

目标C.m: 目标C.h: 斯威夫特:
在代码中创建新变量
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

在代码中创建新变量
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

我认为
AppDelegate
的新实例也是一个问题。应该使用
UIApplication.shared.delegate.chatId
访问它。是的,我一次也没有注意到这一点。我按照您的建议尝试了,但是我得到了一个新的错误:类型为“UIApplicationDelegate”的值没有成员“chatId”…这可能是错误的-我已经清楚地知道了在AppDelegate.m和AppDelegate.h中定义了它(如果您愿意,我可以上传一份项目副本-这很奇怪)-它变为零的点在Swift类中的以下行:let chatSessionId:NSNumber=oCchatId.chatId当在NSNumber*chatId=[aps objectForKey:@“chatId”];我总能看到值(当使用我的方法或你的方法时)我在clientChatSendMessage中有一些小的更改,请尝试一下。我很抱歉-之前我认为这已经解决了,但事实并非如此-当我调用chatSessionId时,使用你上面发布的示例,它仍然为null/空(仅在swift端-目标c中有)我认为
AppDelegate
的新实例也是一个问题。应该使用
UIApplication.shared.delegate.chatId
访问它。是的,我一次也没有注意到这一点。我按照您的建议尝试了,但是我得到了一个新的错误:类型为“UIApplicationDelegate”的值没有成员“chatId”…这可能是错误的-我已经清楚地知道了在AppDelegate.m和AppDelegate.h中定义了它(如果您愿意,我可以上传一份项目副本-这很奇怪)-它变为零的点在Swift类中的以下行:let chatSessionId:NSNumber=oCchatId.chatId当在NSNumber*chatId=[aps objectForKey:@“chatId”];我总能看到值(当使用我的方法或你的方法时)我在clientChatSendMessage中有一些小的更改,请尝试一下。我很抱歉-之前我认为这已经解决了,但事实并非如此-当我调用chatSessionId时,使用你上面发布的示例,它仍然为null/空(仅在swift端-目标c中有)您可以在目标c中使用swift。您可以在目标c中使用swift
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