問題タブ [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.
ios - React Native / Swift Native モジュールは一度だけ動作します
反応ネイティブ iOS アプリで迅速なネイティブ モジュールを使用して、アセット URL からアニメーション GIF を生成します。最初の試行ではうまく機能していますが、一度使用した後にコンポーネントをエスケープして新しいアセットを渡すと、アプリがクラッシュし、次のエラーが表示されることがあります:
反応エラー:
または、xcode がこの Objective-C 関数にリダイレクトし、返される _instance に値がないことを通知することがあります。
反応コンポーネントでネイティブ モジュールを呼び出す方法は次のとおりです。
Swift モジュールを GifGenerator.m にエクスポートする方法:
そして、私の迅速なクラスの重要な部分:
これらは私のコードの重要な部分ですが、必要に応じてさらに表示できます
javascript - React-Native: アプリを閉じている間のアプリのバックグラウンド更新
アプリのデータベースを 30 分または 60 分ごとに更新する必要があります。多くの検索の後、私はこのモジュールを見つけました:
https://github.com/transistorsoft/react-native-background-fetch
そのページにあるように:
iOS バックグラウンド フェッチは、基本的には (ユーザーのゴールデン タイムの時間帯に) 約 15 分ごとにアプリを起動し、アプリに正確に 30 秒のバックグラウンド実行時間を提供する API です。このプラグインは、background-fetch イベントが発生するたびに、提供された callbackFn を実行します。fetch イベントが発生するレートを上げる方法はなく、このプラグインはレートを UIApplicationBackgroundFetchIntervalMinimum の最も頻繁な値に設定します。iOS は、デバイスの使用状況と時刻に基づいてレートを自動的に決定します (例: fetch-レートは、ゴールデン タイムの時間帯で約 15 分です。たとえば、午前 3 時など、ユーザーが眠っていると推定される場合は頻度が低くなります)。
Swiftでコードを書くとどうなりますか? 反応ネイティブで sqlite を使用してデータを保存しています。ウェイクアップして新しいデータをチェックするコードをSwiftで書いた場合、反応ネイティブでデータを保存するために使用したのと同じデータベースにアクセスできますか?
react-native-sqlite-storage を使用して、データを反応ネイティブに保存しています。
c - Swift から C に文字列を渡して Swift に戻す
Swift と C の間で文字列を渡すときに、理解できない動作が見られます。次の Swift 関数を検討してください。
そしてC関数:
上記のように実行するdemo
と (B2 行と B3 行のみがコメント化されます)、次の出力が得られます。
これには 2 つの点があります。1) C コードはポインター 0x10021b9b0 を取得しますが、Swift では、文字列は 0x000000010021b8a0 に格納されていました。私はそれらが同じであることを期待していたでしょうが、Swift は C に渡す前に文字列のコピーを作成すると思いますか? 2) もっと驚くべきことは、C から Swift に返されるポインタは同じ場所ですが、内容が異なるということです。さらに、最後の 2 つの print ステートメントは異なる出力を生成します。
ここで、 の行 A を単純にコメントアウトするとdemo
、次の結果が得られます。
C 関数への呼び出しの前のすべてのものは正しくないため、これは驚くべきことです。
次に、行 B1 をコメントアウトし、B3 のコメントを解除すると (C への呼び出しを削除するだけです)、期待される出力が得られます。
B2 行のコメントを外して (A、B1、および B3 をコメントアウトして) 実行すると、次のようになります。
最後に、行 A と B2 のコメントを外して (B1 と B3 をコメント アウトして) 実行すると、期待どおりの結果が得られます。
C への呼び出しが予測できない方法でメモリを踏みつけているように見えますが、ここで何か間違ったことをしていますか?
macOS Sierra、Xcode 8.0、Swift 3.0 で動作します。
objective-c - Swift to Objective C ヘッダー ファイルが見つかりません
私は最新の Xcode 8.0 でこの問題を抱えており#import "xxx-Swift.h"
、Objective C の実装をしようとすると、コード エディターで「ファイルが見つかりません」というエラーが表示されます。
プロジェクトは正常にビルドおよびデバッグされますが、この厄介な赤い弾丸を取り除くことはできないようです。
私はすべてのビルド設定を確認し、それらのすべてをトリガーしてプレイしました。
はい、これらの設定は間違いなく問題ないようです。
私が言うように、プロジェクトのビルドは成功します。
しかし、コード ウィンドウのエラーは本当に厄介です。
最終的に私はそれを修正しました
これを修正する方法や間違っていることについて、誰かがより良い提案をしていますか?
おそらく、Xcodeのバグですか?
フィードバック/提案をいただければ幸いです。
前もって感謝します。
swift - NSDictionary を Dictionary に変換するにはどうすればよいですか?
すでに XCode 8 に更新しており、コードを Swift 2 から Swift 3 に変換する必要があります。
NSDictionary
以前、に変換したいときDictionary
は、次のように書きました。
はどこpost_params
ですかNSDictionary
。
しかし、Swift 3 では、次のエラーが表示されます。
なんで?変更点
編集 1
私も次のことを試しました:
しかし、それはこのエラーを与えます:
編集 2
私も次のことを試しました:
NSDictionary
の代わりに宣言しますがNSDictionary!
、機能しません。このエラーが発生しました:
編集 3
私も次のことを試しました:
しかし、私はこのエラーを受け取りました:
objective-c - swift コードを obj c プロジェクトにブリッジする
Swift ブリッジを追加し、objc プロジェクトで Swift を許可するように適切な設定を変更しました。しかし、私の大きな問題は、ブリッジしようとしているswift3コードが、メンバーやタイプなどを持たないことを示しているため、プロジェクトですべてのエラーが発生していることです。それに加えて、解析はエラーを発生させ、動作したくありません。 .プロジェクトが古すぎて、プロジェクトが2歳か何かでこれを行うことができない場合、それがプロジェクトの基盤であるかどうかはわかりません...
ここに私が見たエラーのいくつかを示します。正しい方向に向けられることを願っています。
tltr-私が直面している大きな問題のいくつかは、タイプ「UIApplication」にメンバー「共有」がなく、タイプ「UIImage」の値とともに未解決の識別子「解析」を使用するとメンバー「描画」がないことです
objective-c - React Native Bridging: JSON を Swift 関数に渡す
私は Swift と Objective-C の初心者ですが、React Native から Swift へのブリッジを作成し、JSON と JSON 配列をパラメーターとして Swift に送信しようとしています。
React 内で、この関数を呼び出したいと思います。
つまり、文字列、オブジェクト、およびオブジェクト配列です。
私のブリッジのobjective-cファイルには、これがあります:
そして、私の迅速なファイルでは、多くの組み合わせを試しましたが、何もうまくいかないようです:
パラメータを Swift ファイルまで送信するにはどうすればよいですか?
ありがとう
/ピーター
ios - Objective C の Swift クラス
settings.swift があり、-Swift.h を ObjC クラスの .m ファイルにインポートしています。次のようなものが必要です:
@property(nonatomic, strong) 設定 *settings; ただし、-Swift.h は .m ファイルにインポートする必要があり、.h は settings.swift について何も知りません。これを行う方法を知っていますか?