问题标签 [objective-c-swift-bridge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
602 浏览

ios - React Native / Swift Native 模块只工作一次

我在我的 react native ios 应用程序中使用 swift native 模块从资产 url 生成动画 gif。它在第一次尝试时运行良好,但是当我转义组件并在使用一次后传递新资产时,应用程序崩溃,有时会显示此错误:

反应错误:

反应错误

或者有时xcode将我重定向到这个objective-c函数,告诉我要返回的_instance没有价值:

Objective-C 错误

这是我在我的反应组件中调用我的本机模块的方式:

我如何在 GifGenerator.m 中导出我的 swift 模块:

我的快速课程的重要部分:

它们是我代码的重要部分,但如果您需要,我可以向您展示更多

0 投票
1 回答
3203 浏览

javascript - React-Native:应用关闭时后台应用刷新

我需要每 30 或 60 分钟更新一次应用程序的数据库。经过大量搜索,我找到了这个模块:

https://github.com/transistorsoft/react-native-background-fetch

正如它在其页面中所说:

iOS Background Fetch 基本上是一个 API,它大约每 15 分钟(在用户的黄金时段)唤醒您的应用程序,并为您的应用程序提供正好 30 秒的后台运行时间。每当后台获取事件发生时,此插件将执行您提供的 callbackFn。没有办法增加 fetch-event 发生的速率,这个插件将速率设置为 UIApplicationBackgroundFetchIntervalMinimum 的最频繁的可能值——iOS 根据设备使用情况和时间自动确定速率(即:fetch-黄金时段的速率约为 15 分钟;假设用户在睡觉时频率较低,例如凌晨 3 点)。

如果我用swift写一些代码怎么办?我在 react native 中使用 sqlite 来存储我的数据。如果我在 swift 中编写一些代码来唤醒并检查新数据,我可以访问我用来存储数据的同一个数据库吗?

我正在使用 react-native-sqlite-storage 将我的数据存储在 react native 中。

https://github.com/andpor/react-native-sqlite-storage

0 投票
1 回答
831 浏览

objective-c - CryptoSwift 和 Objective-C

如何在我的 Objective-C 项目中使用 CryptoSwift?

我有一个 Objective-C 项目,并想为此使用加密库 CryptoSwift。我已经成功地将单个 Swift 文件用于我的 Objective-C 项目,但是如何使用 Swift 项目作为在 Objective-C 中构建的父项目的子项目。

我也尝试使用可可豆荚,但无济于事。

0 投票
1 回答
210 浏览

c - 将字符串从 Swift 传递到 C 回 Swift

在 Swift 和 C 之间传递字符串时,我看到一些我不理解的行为。考虑以下 Swift 函数:

和 C 函数:

如果我demo按照上面的方式运行(所以只有 B2 和 B3 行被注释掉),我得到以下输出:

有两件事让我感到惊讶:1) C 代码获取指针 0x10021b9b0,而在 Swift 中,字符串存储在 0x000000010021b8a0。我本来希望它们是相同的,但我猜 Swift 在将它传递给 C 之前会复制字符串?2) 更令人惊讶的是,虽然从 C 返回到 Swift 的指针在同一个位置,但内容却不同;此外,最后两个打印语句产生不同的输出。

现在,如果我简单地注释掉行 A in demo,我会得到以下结果:

这令人惊讶,因为调用 C 函数之前的所有内容都不正确。

如果我然后注释掉 B1 行并取消注释 B3(只是删除对 C 的调用),我会得到预期的输出:

如果我在未注释的 B2 行(注释掉 A、B1 和 B3)的情况下运行它,我会得到:

最后,如果我在未注释 A 和 B2 行(B1 和 B3 被注释掉)的情况下运行,我会得到预期的结果:

在我看来,对 C 的调用以一种不可预测的方式占用了内存,但是我在这里做错了什么吗?

在 macOS Sierra、Xcode 8.0、Swift 3.0 上运行。

0 投票
1 回答
3043 浏览

swift - NS_SWIFT_NAME 用于将 C 函数作为类扩展导入

我有两个 C 函数:

作为练习,我尝试将它们作为扩展方法导入 Swift 中UIColor

遵循 Apple 在 WWDC 2016 示例中的“Swift 中的新功能”演示文稿:

我试图类似地注释我的函数:

但是我收到以下警告:

'swift_name' 属性只能应用于带有原型的函数声明

我在这里做错了什么?


更新:为此问题打开了SR-2999 。

0 投票
1 回答
370 浏览

objective-c - 找不到 Swift 到 Objective C 头文件

我在最新的 Xcode 8.0 上遇到了这个问题,当我尝试#import "xxx-Swift.h"在我的 Objective C 实现中时,我的代码编辑器中出现“找不到文件”的错误。
该项目可以正常构建和调试,但我似乎无法摆脱这个恼人的红色子弹。
我已经完成了所有的构建设置,并且触发并使用了它们中的每一个。
是的,这些设置肯定看起来不错。
正如我所说,项目构建成功。
但是代码窗口中的错误确实很烦人。
最终我用一个

有人对我如何解决这个问题或我做错了什么有更好的建议吗?
也许,一个 Xcode 错误?
反馈/建议将不胜感激。

提前致谢。

0 投票
3 回答
21846 浏览

swift - 如何将 NSDictionary 转换为 Dictionary?

我已经更新到 XCode 8,现在我需要将我的代码从 Swift 2 转换为 Swift 3。

之前,当我想转换NSDictionary为 时Dictionary,我只写了以下内容:

post_params在哪里NSDictionary

但是现在使用 Swift 3,我收到了这个错误:

为什么?有什么改变?


编辑 1

我还尝试了以下方法:

但这给出了这个错误:

“NSDictionary!”  不能转换为 'Dictionary<String, Any>'; 您的意思是使用 <code>as!</code> 强制向下转换吗?


编辑 2

我还尝试了以下方法:

我在哪里声明NSDictionary而不是NSDictionary!,但它不起作用;我收到了这个错误:

'NSDictionary' 不能转换为 'Dictionary<String, Any>'; 您的意思是使用 <code>as!</code> 强制向下转换吗?


编辑 3

我还尝试了以下方法:

但我收到了这个错误:

“NSDictionary!”  不能转换为 'Dictionary<String, Any>!';  您的意思是使用 <code>as!</code> 强制向下转换吗?

0 投票
1 回答
156 浏览

objective-c - 将 swift 代码桥接到 obj c 项目中

我添加了 swift 桥并更改了正确的设置以允许在 objc 项目中使用 swift。但我最大的问题是,我试图桥接的 swift3 代码在我的项目中出现了所有错误,因为它显示它没有成员、没有类型等。伴随着 Parse 发出错误并且不想工作。 .我不知道它是否是该项目的基础,如果它太旧并且无法做到这一点,因为该项目已经 2 岁或什么...

成员问题的 Swift 错误

解析错误

以下是我看到的一些错误,希望能指出正确的方向。

tltr-我看到的一些大问题是类型“UIApplication”没有成员“共享”并且使用未解析的标识符“解析”以及“UIImage”类型的值没有成员“绘制”

0 投票
2 回答
3937 浏览

objective-c - React Native Bridging:将 JSON 传递给 Swift 函数

我是 Swift 和 Objective-C 的新手,但我试图搭建从 React Native 到 Swift 的桥梁,并将 JSON 和 JSON 数组作为参数发送给 Swift。

在 React 内部我想调用这个函数:

所以一个字符串、一个对象和一个对象数组。

在我的桥目标 c 文件中,我有这个:

在我的 swift 文件中,我尝试了很多组合,但似乎没有任何效果:

我收到此错误消息: 反应本机错误消息

如何将我的参数一直发送到我的 Swift 文件?

谢谢

/彼得

0 投票
0 回答
95 浏览

ios - 目标 C 中的 Swift 类

我有 settings.swift 并且我正在将 -Swift.h 导入到我的 ObjC 类 .m 文件中。我需要类似的东西:

@property(nonatomic, strong) 设置 *settings; 但是 -Swift.h 必须在 .m 文件中导入,并且 .h 对 settings.swift 一无所知。你知道怎么做吗?