interop.referenceから文字列を取得し、ここに私のコードは次のとおりです。NativeScript:開始するには
var buffer = malloc(interop.sizeof(interop.types.UTF8CString));
var fillBuffer = mac.getBytes(buffer);
var bytes = new interop.Reference(interop.types.UTF8CString, buffer);
var hexMac = bytes[0];
変数 'マックは' NSDataのはCoreBluetoothから取り出さ反対しています。ペリフェラルのMACアドレス(00:0b:57:a2:fb:a0)を含むBLEデバイスからのスキャン応答です。
この問題は、先に投稿したTHISの質問にリンクしています。
提供されるソリューションは素晴らしいです。しかし、私はこれをnativescriptで実装することはできません:
(instancetype)stringWithFormat:(NSString *)format、...;
Intellisenseは、メソッドがNSString型に存在しないことを伝えます。
その問題のために、私は別のルートに行くことにしました(あなたが言うように)。私は、MACアドレスのバイトでバッファを充填しています。上記のコードでは、bytes [0]は0xb57a2fba0に相当します。
これは、interop.Referenceであるバックエンド(好ましくはxx:xx:xx:xx:xx形式)に格納できる文字列に変換しようとしています。
私はこの週末中、すべての解決策を見つけることができませんでした。私も、stringWithFormatがサポートされているかどうかを調べるために、objc!foundation.d.tsを壊しました。無駄です。
nativescriptコミュニティのスラックは解決策も提供できませんでした。
できるだけお手伝いください!
残念ながら、同じ結果が生成されます。 "プロパティ 'initWithFormat'が 'NSString型'に存在しません。 私は+のallocした後にこれを試みたが、+ stringWithFormatを試してみました:なし 何私を失望させることは、あなたの答えは、問題がNativeScriptの制限であるように見えると、黄金色であるということである 私はここでの問題をオープンしました:。。HTTPS:/ /github.com/NativeScript/NativeScript/issues/4910 私は雇用主がこのプロジェクトのネイティブコードに切り替えるように努力してきましたが、私たちができるようには見えません – AzraelPwnz
'... withFormat:'はvarargメソッドなので、それらはインポートできないでしょうか?しかし、これがJavaScript(?)なら、いつでも変換できます。 'と16未満の場合は先行ゼロでそれを埋めますか?JavaScript文字列を変換する方法があると仮定します。bあなたがそれを必要とするならNSStringに感謝しますか? (私は推測しています;もう一度、私はNativeScriptについて何も知らない)。運が良かった。 –
あなたのコメントにより、解決が導かれました。これはちょっと面倒ですが、それが動作します。: var hexMac = bytes [0] .toString()。(/)&(&$ /%\\ "/g、 '').split( ":")[1]; ' – AzraelPwnz