gpt4 book ai didi

ios - 如何将 NSData 参数传递给 swift 3 中调用的 objective-c 方法?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:29:18 26 4
gpt4 key购买 nike

我有 Objective-C 方法

- (void)updateRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;

我在 swift 2.3 中调用成功

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {

Moxtra.sharedClient().updateRemoteNotificationsWithDeviceTokens(deviceToken)

}

但在 swift 3 中,方法发生了变化(从 NSdata 到 data)

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

Moxtra.sharedClient().updateRemoteNotifications(withDeviceToken: deviceToken)

但是 Data type 的 swift 3 device token 返回 -> 32 bytesNSdata type 的 swift 2.3 设备 token 返回 - token 字符串 - fffeaa1e 5aaaba7d a0e75e33 c139839f 6c906ae5 2b20f834 5a290c3d 20dc447c

所以在 swift 3 中我无法将 deviceToken 传递给服务器

有什么方法可以在 swift 3 中传递参数类型为“数据”的预期设备 token ?

swift 2.3 和 swift 3 方法的详细区别是什么

swift 2.3 -

Moxtra.sharedClient().updateRemoteNotificationsWithDeviceTokens(fffeaa1e 5aaaba7d a0e75e33 c139839f 6c906ae5 2b20f834 5a290c3d 20dc447c)

swift 3

Moxtra.sharedClient().updateRemoteNotifications(withDeviceToken: 32)

最佳答案

您的 swift 3 代码完全正确,我做的和您做的完全一样,而且工作正常。我认为您还有其他问题。

如果您仍然怀疑它正在改变 NSData 值,那么您可以尝试其他类似的实验:

在您的 Objective-C 代码中添加以下方法:

-(void)stringWithData:(NSData *)data
{
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
}

现在从您的 swift 3 代码中调用此方法,如下所示:

let str = "Hello StackOverflow!";
let data:Data! = str.data(using: String.Encoding.utf8);
Moxtra.sharedClient().string(with: data);

现在,在这里你可以看到 Objective-c 有 NSData 参数,而 swift 有 Data 作为参数。

现在运行代码,查看日志,是否在 Log in objective-c 中得到相同的字符串?是的?你对 NSDataData 的疑惑解决了吗?

这没有任何问题,问题一定出在您的 Objective-C 代码上,或者可能是后端代码。从后端检查他们是否获得了正确的 deviceToken。检查您是否使用了正确的开发/分发 APNS 证书。调试每个点。 DataNSData

没有任何问题

关于ios - 如何将 NSData 参数传递给 swift 3 中调用的 objective-c 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40437961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com