BBAJSBindingConverter.h
1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//
// BBAJSBindingConverter.h
// BBAMNP
//
// Created by baidu on 2019/8/20.
//
#import <Foundation/Foundation.h>
#import <WebKit/WebKit.h>
#import <JavaScriptCore/JavaScriptCore.h>
@interface BBAJSBindingConverter : NSObject
/**
* @brief NSData转为js ArrayBuffer
*
* @param data NSData
* @param jsContext JSContext
* @return ArrayBuffer
*/
+ (JSValue *)dataToArrayBuffer:(NSData *)data jsContext:(JSContext *)jsContext;
/**
* @brief 尝试把JSValue数据类型转成 数字类型的 array
* 如果 jsValue 实际JS对象是array那么正常数据转化,如果是 typedArray类型,则尝试做数据类型转化
* 最后如果是array,但是里面的对象不是number,我们也认定是错误
*
* @param jsValue JSValue
* @return ArrayBuffer
*/
+ (NSArray<NSNumber *> *)arrayFromJSValue:(JSValue *)jsValue API_AVAILABLE(ios(10.0));
/**
* typedArray数据类型转成 OC Array。如果不是typedArray 则返回nil,如果是普通的array 也是返回nil
*/
+ (NSArray<NSNumber *> *)arrayFromTypedArray:(JSValue *)typedArrayJSValue API_AVAILABLE(ios(10.0));
/**
* @brief 判断 jsValue是否可以转化成typedArray类型
* @return BOOL
*/
+ (BOOL)checkJSValueIsTypedArray:(JSValue *)jsValue API_AVAILABLE(ios(10.0));
/**
* @brief OCArray 转成 JS Float32 typedArray
*
* @param array oc array
* @param context JSContext
* @return valid if succeed
*/
+ (JSValue *)float32TypedArrayJSValueFromArray:(NSArray *)array jsContext:(JSContext *)context;
/**
* @brief JSValueRef转换成NSString
*
* @param ctx oc JSContext
* @param valueRef JSValueRef
* @return NSString
*/
+ (NSString *)JSValueRefToNSString:(JSContextRef)ctx
jsValueRef:(JSValueRef)valueRef;
@end