gpt4 book ai didi

ios - 如何从NativeScript调用Objective-C NSExpression(format:…)?

转载 作者:行者123 更新时间:2023-12-01 19:40:10 25 4
gpt4 key购买 nike

我正在扩展NativeScript-Mapbox plugin,以包括渲染随 map 缩放而改变大小的圆圈的功能。我正在研究example on this page

在iOS上,尝试将此NSExpression调用转换为NativeScript时遇到问题:

layer.circleRadius = [NSExpression expressionWithFormat: @"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.75, %@)",
@{@12: @2, @22: @180}];

在我看来,tns-platform-declarations .. objc!Foundation.d.ts NSExpression定义中列出的此调用的NativeScript类似物是:
static expressionWithFormatArgumentArray(expressionFormat: string, _arguments: NSArray<any>): NSExpression;

这是正确的方法吗?

如果是这样,如何将[12:2,22:180]转换为NSArray类型?

缺少文档,我尝试创建数组数组并将其传递给:
new NSArray( {objects: myArray} );

但它因段错误而崩溃。

显然,我缺少了一些东西。

最佳答案

您要处理的swift(不是Objective-c)对象不是数组,而是字典。

import Swift
print(type(of: [12: 2, 22: 180]))
// Dictionary<Int, Int>

期望的数组是所需的所有格式替换参数的数组。在这种情况下,该数组的长度为 1,仅包含字典。您可以将其转换为NativeScript JavaScript / TypeScript:
const expr = NSExpression.expressionWithFormatArgumentArray(
"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.75, %@)",
[{12: 2, 22: 180}]);

关于ios - 如何从NativeScript调用Objective-C NSExpression(format:…)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54890753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com