2016-04-18 8 views
0

私は実際にデータを取得したい機能を持っています。関数データの取得

大括弧内に値DecodedDataを印刷することができます。

しかし、もし私がprint(DecodedData)を関数のすぐ外側に置くとすれば、Xcodeは 'Expected declaration'というファイルにはどのようにしてDecodedDataをアクセスできますか?

デリゲートメソッドを使用してみましたが、成功していませんでした。それ以外の方法はありますか?もしそうなら、私はそれをどうやってやりますか?私は別のスウィフトファイル全体で利用できる変数DecodedDataを持つに行くかどう

var DecodedData = "" 
//Reading Bluetooth Data 
func peripheral(peripheral: CBPeripheral, didUpdateValueForCharacteristic characteristic: CBCharacteristic, error: NSError?) { 

    if let data = characteristic.value { 
     DecodedData = String(data: data, encoding: NSUTF8StringEncoding)! 
    } 

    print(DecodedData) 
} 

+0

正確に別の 'print(DecodedData)'行 –

+0

最後の中括弧の直後に置いてください。 –

+0

これは変数とやり取りするのに適切な場所ではないようです。あなたのクラスのホールコードをコピーできますか? –

答えて

0

あなたはクラス内に静的変数を作成し、他のスウィフトファイルを使用することができます。

class YourClass { 
static var DecodedData: String = "" 
... 


func peripheral(peripheral: CBPeripheral, didUpdateValueForCharacteristic characteristic: CBCharacteristic, error: NSError?) { 

    if let data = characteristic.value { 
    YourClass.DecodedData = String(data: data, encoding: NSUTF8StringEncoding)! 
    } 
print(YourClass.DecodedData) 
} 
} 

またはyourclasのシングルトンオブジェクトを作成できます。

class YourClass { 

static let singletonInstance = YourClass() 

var DecodedData: String = "" 

private init() { 
} 

func peripheral(peripheral: CBPeripheral, didUpdateValueForCharacteristic characteristic: CBCharacteristic, error: NSError?) { 

if let data = characteristic.value { 
    self.DecodedData = String(data: data, encoding: NSUTF8StringEncoding)! 
} 
} 
} 

その他のクラスでは、シングルトンオブジェクトで使用できます。

+0

ありがとう、良い先生!あなたの最初のソリューションはチャンピオンのように機能します! –

+0

その後、答えを受け入れることを忘れないでください:p – Sahil

+0

私はほとんど忘れてしまった;) –