2014-07-25 2 views
0

저는 Estimote 비콘을 작업하고 가장 가까운 비컨 (부전공 및 중요 값)을 찾기 위해 데모 앱을 만들고 있습니다. 하지만 내가 추정 예를 응용 프로그램을 확인하면 적절한 주요 및 사소한 가치를 얻고 있지만 내 프로젝트에서 그 코드를 사용할 때 그것은 나에게 잘못된 사소한 주요 가치를 부여.추정치 비콘의 부차적 및 주요 값 얻기

여기 내 코드입니다 : - 사전에

typedef enum : int 
{ 
    ESTScanTypeBluetooth, 
    ESTScanTypeBeacon 

} ESTScanType; 


- (id)initWithScanType:(ESTScanType)scanType completion:(void (^)(ESTBeacon *))completion 
{ 
    self = [super init]; 
    if (self) 
    { 
     self.scanType = scanType; 
     self.completion = [completion copy]; 
    } 
    return self; 

} 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.beaconManager = [[ESTBeaconManager alloc] init]; 
    self.beaconManager.delegate = self; 

    self.region = [[ESTBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:BEACONUUID1] 
     identifier:@“AllBeacons”]; 
    if (self.scanType == ESTScanTypeBeacon) 
    { 
     [self.beaconManager startRangingBeaconsInRegion:self.region]; 
    } 
    else 
    { 
     [self.beaconManager startEstimoteBeaconsDiscoveryForRegion:self.region]; 
    } 

    // Do any additional setup after loading the view from its nib. 
} 
- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 

    /* 
    *Stops ranging after exiting the view. 
    */ 
    [self.beaconManager stopRangingBeaconsInRegion:self.region]; 
    [self.beaconManager stopEstimoteBeaconDiscovery]; 
} 

#pragma mark - ESTBeaconManager delegate 

- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region 
{ 
    self.beaconsArray = beacons; 

    [tblView reloadData]; 
} 

- (void)beaconManager:(ESTBeaconManager *)manager didDiscoverBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region 
{ 
    self.beaconsArray = beacons; 

    [tblView reloadData]; 
} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    __weak BeconsDetailCell *cell=(BeconsDetailCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


    if (cell == nil) 
    { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"BeconsDetailCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 
    } 

    ESTBeacon *beacon = [self.beaconsArray objectAtIndex:indexPath.row]; 

    //beacon name 

    cell.lblBeaconname.text = @"Estimote Beacon"; 


    //Beacon major 

    NSString *strMajor = [NSString stringWithFormat:@"%@",beacon.major]; 
    strMajor = [strMajor stringByReplacingOccurrencesOfString:@"-" withString:@""]; 
    cell.lblBeaconMajor.text = strMajor; 

    //Beacon minor 

    NSString *strMinor = [NSString stringWithFormat:@"%@",beacon.minor]; 
    strMinor = [strMinor stringByReplacingOccurrencesOfString:@"-" withString:@""]; 
    cell.lblBeaconMinor.text = strMinor; 

    //Beacon distance 

    switch (beacon.proximity) 
    { 
     case CLProximityUnknown: 
      cell.lblBeaconDistance.text = @"Unknown"; 
      break; 

     case CLProximityFar: 
      cell.lblBeaconDistance.text = @"Far"; 
      break; 

     case CLProximityNear: 

      cell.lblBeaconDistance.text = @"Near"; 
      break; 

     case CLProximityImmediate: 
      cell.lblBeaconDistance.text = @"Immediate"; 
      break; 

     default: 
      break; 
    } 
    return cell; 
} 

감사합니다.

답변

1

당신이 ESTBeacon class에 대한 설명서를 참조하면 당신은 볼 것이다 전공 및 NSNumber의은과의 NSNumber가 description 방법을 통해 값을 얻기 위해 문자열 맥락에서 평가 될 수 있지만, 이것은 올바른 방법이 아니다 작은 수치에 액세스하십시오.

당신은 당신의 재생에 대한

if (beacon.major != nil) { 
    cell.lblBeaconMajor.text= [NSString stringWithFormat:@"%ld",[beacon.major intValue]]; 
} 
else { 
    [email protected]""; 
} 

if (beacon.minor != nil) { 
    cell.lblBeaconMinor.text= [NSString stringWithFormat:@"%ld",[beacon.minor intValue]]; 
} 
else { 
    [email protected]""; 
} 
+0

감사를 사용해야하지만, 문제는 내가 잘못된 비콘 크고 작은 값을 얻고 있다는 점이다. – Rushabh

+0

몇 개의 표지가 있습니까? 비컨을 발견하면 배열을 다시로드하기 만합니다. 배열의 재정렬이 가능할 수 있습니다. 또한 당신이 잘못해서 무엇을 의미합니까? 다른 번호? 제로? – Paulw11