【问题标题】:Can't find Foundation.NSJavaScriptExtension class in app extension在应用扩展中找不到 Foundation.NSJavaScriptExtension 类
【发布时间】:2015-09-18 08:14:56
【问题描述】:

我正在使用 Xamarin Studio 开发适用于 iOS 的应用程序扩展。我试图使用一个应该在 Foundation API 中的类,但我找不到它。该类称为NSJavaScriptExtension

我尝试通过指定命名空间来访问它:

Foundation.NSJavaScriptExtension

我也尝试使用using 指令:

using Foundation;

当我尝试编译它时,我收到以下错误消息:

错误 CS0103:名称“NSJavaScriptExtension”不存在于 当前上下文 (CS0103)

这真的很奇怪,因为Xamarin documentation 说它存在。

这是我的代码:

// Create an extension Item
var extensionItem = new NSExtensionItem ();
// Create a Final value Dictionary
var finalize = new NSMutableDictionary ();

finalize.Add (NSJavaScriptExtension.FinalizeArgumentKey, new NSString ("{bgColor:red}")); // <- here

// Create an item provider and attach it to the extension item
var provider = new NSItemProvider (finalize, MobileCoreServices.UTType.PropertyList);
extensionItem.Attachments = new NSItemProvider[]{ provider };

// Send results to the calling Host App
ExtensionHelper.ExtensionContext.CompleteRequest (new NSExtensionItem[]{ extensionItem },
(completionHandler) => {
    return;
});

【问题讨论】:

  • 请指定您使用的 XI 版本。此成员是 XI 9.0 中的新成员。
  • 我使用的是 Xamarin.iOS 版本:8.10.5.26(商业版)。如果它在 XI 8 中不可用,有没有办法通过使用其他东西使其适用于 iOS 8?

标签: c# ios xamarin xamarin.ios


【解决方案1】:

类型 NSJavaScriptExtension 是在 XI 9.0 中添加的。获取它的最简单方法是升级到最新的稳定版本,该版本也可以针对较旧的 iOS 版本。

如果您无法更新,那么您可以在运行时手动加载任何常量,例如:

using Foundation;
using ObjCRuntime;

...

IntPtr foundation = Dlfcn.dlopen (Constants.FoundationLibrary, 0);
NSString FinalizeArgumentKey = Dlfcn.GetStringConstant (foundation.Handle, "NSExtensionJavaScriptFinalizeArgumentKey");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2018-02-20
    • 2021-03-30
    相关资源
    最近更新 更多