2017-10-02 13 views
0

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コミュニティのスラックは解決策も提供できませんでした。

できるだけお手伝いください!

答えて

1

私は全然NativeScriptについて何を知っているが、あなたが書いた他のコードを与えられていない、私はあなたが最初+allocを呼んでいると仮定し、そのため-initWithFormat:(初期化インスタンスメソッド)を使用することを意味するのではなく+stringWithFormat:(A割り当てと初期化を処理するクラスのメソッド)。

+0

残念ながら、同じ結果が生成されます。 "プロパティ 'initWithFormat'が 'NSString型'に存在しません。 私は+のallocした後にこれを試みたが、+ stringWithFormatを試してみました:なし 何私を失望させることは、あなたの答えは、問題がNativeScriptの制限であるように見えると、黄金色であるということである 私はここでの問題をオープンしました:。。HTTPS:/ /github.com/NativeScript/NativeScript/issues/4910 私は雇用主がこのプロジェクトのネイティブコードに切り替えるように努力してきましたが、私たちができるようには見えません – AzraelPwnz

+0

'... withFormat:'はvarargメソッドなので、それらはインポートできないでしょうか?しかし、これがJavaScript(?)なら、いつでも変換できます。 'と16未満の場合は先行ゼロでそれを埋めますか?JavaScript文字列を変換する方法があると仮定します。bあなたがそれを必要とするならNSStringに感謝しますか? (私は推測しています;もう一度、私はNativeScriptについて何も知らない)。運が良かった。 –

+1

あなたのコメントにより、解決が導かれました。これはちょっと面倒ですが、それが動作します。: var hexMac = bytes [0] .toString()。(/)&(&$ /%\\ "/g、 '').split( ":")[1]; ' – AzraelPwnz

関連する問題