如何访问iOS字典来提取单词的定义?
苹果的文档中似乎有一些参考资料,但我在任何组件中都没有看到(例如,这里列出的组件) 因为这似乎是一个相当标准的功能,我觉得我只是缺少一些基本的东西。它也不是最容易搜索的东西 这是苹果的sdk文档 这可能对你有帮助吗如何访问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
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...');
}
})