2015-02-11 3 views
-1

Я работаю над приложением iOS, которое охватывает маяки в пределах региона. У меня есть делегат CLLocationManager, который периодически получает информацию со всех маяков в регионе. У меня есть цикл for, который пересекает все найденные маяки и печатает данные на консоли.Beacon UUID Описание

for i in 0..<knownBeacons.count{ 
    var uuid = knownBeacons[i].proximityUUID.description 
    println(uuid) 
} 

Однако, когда я печатаю описание UUID каждого маяка, он добавляет дополнительную информацию. Например, оператор печати возвращает:

<__NSConcreteUUID 0x1700351e0> B9407F30-F5F8-466E-AFF9-25556B57FE6D 

То, что я действительно искал является только последняя часть «B9407F30-F5F8-466E-AFF9-25556B57FE6D» и хотели бы, чтобы удалить все в <> скобки. Может ли кто-нибудь сказать мне, как это сделать? Или если я не должен использовать свойство UUID.description и должен использовать что-то еще. Благодарю.

Update: Для ясности, я включил полный ViewController класс

class ViewController: UIViewController, CLLocationManagerDelegate { 

    let locationManager = CLLocationManager() 
    let region = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: "B9407F30-F5F8-466E-AFF9-25556B57FE6D"), identifier: "Estimotes") 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     locationManager.delegate = self; 
     if(CLLocationManager.authorizationStatus() != CLAuthorizationStatus.AuthorizedWhenInUse){ 
      locationManager.requestWhenInUseAuthorization() 
     } 
     locationManager.startRangingBeaconsInRegion(region) 
     locationManager.startUpdatingLocation() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func locationManager(manager: CLLocationManager!, didRangeBeacons beacons: [AnyObject]!, inRegion region: CLBeaconRegion!){ 
     let knownBeacons = beacons.filter{ $0.proximity != CLProximity.Unknown } 
     if(knownBeacons.count > 3) {   
      for i in 0..<3{ 
       var uuid = knownBeacons[i].proximityUUID 
       var major = knownBeacons[i].major 
       var minor = knownBeacons[i].minor 
       var proximity = knownBeacons[i].proximity.rawValue 
       var rssi = knownBeacons[i].rssi 
       var accuracy = knownBeacons[i].accuracy.description 
       println(uuid) 
      } 
     } 
    } 
} 

ответ

4
var uuid = knownBeacons[i].proximityUUID!.UUIDString 
+0

К сожалению ... Я попробовал. Я получаю следующую ошибку в XCode: '' NSUUID! ' не имеет члена с именем 'UUIDString'' – andyopayne

+0

Кроме того, я не уверен, почему вопрос зашел на голосование. – andyopayne

+0

Почему это говорит NSUUID !, это необязательно, что нужно развернуть? например 'let thing = NSUUID()' 'let that = thing.UUIDString'' println (that) 'работает для меня. Как вы создаете массив knownBeacons? –

Смежные вопросы