Does anyone know of a good way to write an iOS 8 share extension without the MainInterface.storyboard
that comes with the template?
When I delete the fi
Can't add a comment but it is no longer NSPrincipalClass rather it is NSExtensionPrincipalClass
Instead of the @objc
hack, the proper way to do it in Swift is to include the module name in NSExtensionPrincipalClass
, i.e.,
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).ActionViewController</string>
(Documenting the error otherwise:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM setObject:forKey:]: object cannot be nil (key: ...)'
Hopefully will help someone who run into this error in the future.)
Found the answers from these answers combined Answer 1 and Answer 2.
For Objective-C you will have to put the following in the info.plist
of the App extension:
NSExtensionPrincipalClass
and make sure that it is under NSExtension
Dict
So full answer should be like this , in my case ActionViewController
is the App extension viewController
Figured it out!
Turns out there's a weird module naming thing going on in Swift, so you can fix it by adding an @objc
name to the class:
@objc(PrincipalClassName)
class PrincipalClassName: UIViewController {
...
and then set the NSExtensionPrincipalClass
key to PrincipalClassName
.