ios的Extension由OC改为Swift时报错:NSInvalidArgumentException

问题

ios中在创建了一个target,写extension的时候,主文件本来用的OC语言,想要换成Swift语言,会报如下错误,而且extension运行不起来,

报错

默认 13:47:27.970240+0800 testExtension *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM setObject:forKey:]: object cannot be nil (key: 1EF75ACC-0A1F-454A-A080-2B8C93B0F6BC)'

*** First throw call stack:

(0x21eb1927c 0x21dcf39f8 0x21ea92ce8 0x21ea07b18 0x21f536ed4 0x21f536744 0x21e558a38 0x21e5597d4 0x21e502320 0x21e502e3c 0x21e50b4a8 0x21e739114 0x21e73bcd4)

 

解决

打开extension的info.plist,其中打开NSExtension,有一项名为`NSExtensionPrincipalClass`的,后面的值为自己写的主文件名称,在前面加上:`$(PRODUCT_NAME).`,我用的是,改为如下内容:

$(PRODUCT_NAME).PacketTunnelProvider

参考:https://www.jianshu.com/p/41a757a22e7e

你可能感兴趣的:(ios,报错)