如何访问iOS字典来提取单词的定义?

如何访问iOS字典来提取单词的定义?,ios,reactive-programming,Ios,Reactive Programming,苹果的文档中似乎有一些参考资料,但我在任何组件中都没有看到(例如,这里列出的组件) 因为这似乎是一个相当标准的功能,我觉得我只是缺少一些基本的东西。它也不是最容易搜索的东西 这是苹果的sdk文档 这可能对你有帮助吗 NSString *str =@"pretty"; // pass word as string in str which you want to search if ([UIReferenceLibraryViewController dictionaryHasDefinition

苹果的文档中似乎有一些参考资料,但我在任何组件中都没有看到(例如,这里列出的组件)

因为这似乎是一个相当标准的功能,我觉得我只是缺少一些基本的东西。它也不是最容易搜索的东西

这是苹果的sdk文档 这可能对你有帮助吗

NSString *str =@"pretty";
// pass word as string in str which you want to search
if ([UIReferenceLibraryViewController dictionaryHasDefinitionForTerm:str]) {
    UIReferenceLibraryViewController* ref =
    [[UIReferenceLibraryViewController alloc] initWithTerm:str];
    [self presentViewController:ref animated:YES completion:nil];
}
else
{
    // do something when no definition found
}

正如您已经知道的,为了能够使用本机代码,您需要创建一个本机模块

下面是如何

首先在Xcode中添加一个新文件

文件>新建文件>Cocoa Touch类。 确保将其设置为NSObject的子类。例如,将其命名为ReferenceLibraryManager

头文件(.h)中的

您只需实现
RCTBridgeModule
协议:

#import "RCTBridgeModule.h"

@interface ReferenceLibraryManager : NSObject <RCTBridgeModule>
@end

顺便说一下,您可以在上找到创建本机模块的完整指南和示例

适用于仍需要此功能的任何人。我写了一封信,感谢你这么做

下面给出了一个快速演示


谢谢@sp309的回答。你能帮我缩小差距,做出反应吗?我也从来没有开发过原生iOS,所以这是我遇到麻烦的桥梁。这太棒了,谢谢!当我试一试时,我会回复/投票。非常感谢您提供了这段代码,但每个单词都没有返回定义:(@kevando,这不是代码的问题,是吗?:)如果您使用模拟器,您可能没有定义任何字典。您需要使用字典屏幕底部工具栏上的“管理”按钮(显示“未找到定义”的屏幕)添加字典。太棒了!现在@Artal可以使用了。我假设将定义数据作为JSON直接输入我的应用程序。阅读这里,似乎实际上没有办法获取定义数据
#import "ReferenceLibraryManager.h"
#import <UIKit/UIReferenceLibraryViewController.h>
#import "AppDelegate.h"

@implementation ReferenceLibraryManager

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(showDefinitionForTerm:(NSString*)term callback:(RCTResponseSenderBlock)callback)
{
  if (callback == nil)
    return;

  BOOL hasDefinition = NO;
  if ([UIReferenceLibraryViewController dictionaryHasDefinitionForTerm:term])
  {
    hasDefinition = YES;

    dispatch_async(dispatch_get_main_queue(), ^{
      UIReferenceLibraryViewController *referenceLibraryVC = [[UIReferenceLibraryViewController alloc] initWithTerm:term];
      UIViewController *rootVC = ((AppDelegate*)[UIApplication sharedApplication].delegate).window.rootViewController;
      [rootVC presentViewController:referenceLibraryVC animated:YES completion:nil];
    });
  }

  callback(@[@(hasDefinition)]);
}

@end
var React = require('react-native');
var ReferenceLibraryManager = React.NativeModules.ReferenceLibraryManager;
....
var term = "React";
ReferenceLibraryManager.showDefinitionForTerm(term, (hasDefinition) => {

  if(!hasDefinition) {
    alert('definition not found...');
  }
})