2014-11-16 5 views
0

런타임 중에 NSMutablearray에 모든 RSSI 값을 저장하고 마지막으로 콘솔에 출력하려고합니다. x의 값을 20000으로 변경하여 RSSI의 값에 변화가 있는지 확인합니다 ... 불행히도 변경이 없습니다. Xcode는 RSSI의 20000 값을 코드 시작 부분에서 읽습니다 (이것이 맞는지 확실하지 않음). 샘플링 또는?) 문제. 어떤 도움이라도 대단히 감사하겠습니다.iBeacon RSSI 값을 배열에 저장할 수 없습니다.

rssiArray = [[NSMutableArray alloc] init]; 
long newBeacon = 0; 
if (beacon.rssi == newBeacon) 
{ 

    newBeacon = beacon.rssi; 
} 

    else 
    { 
     for (int x = 0; x < 1; x++) { 
      [rssiArray addObject:[NSString stringWithFormat:@"%d", x]]; 
      [rssiArray addObject:@(beacon.rssi)]; 
     } 

    } 
//Send array to console 
NSLog (@"%@", [self rssiArray]); 

배열이 같은 동일한 파일의 맨 합성 :

어레이는 또한 여기에 정의 ViewController.h

#import "ViewController.h" 
#import <CoreLocation/CoreLocation.h> 
#import "DetailViewController.h" 

@interface ViewController() 
{ 

} 

@end 

@implementation ViewController 
@synthesize rssiArray; 
:

//array for storing RSSI values 
@property (strong, nonatomic) NSMutableArray *rssiArray; 

@PaulW

so ...

    1. 이렇게 ViewController.m의 배열을 초기화 :

      - (void)viewDidLoad 
      { 
          [super viewDidLoad]; 
          rssiArray = [[NSMutableArray alloc] initWithObjects:nil]; 
      } 
      
    2. 그래서 같은 AppDelegate.m 내의 didRangeBeacons 방법에 다음 코드를 붙여 ...

      for (int x = 0; x < 500; x++) { 
            [rssiArray addObject:[NSString stringWithFormat:@"%d", x]]; 
            [rssiArray addObject:@(NOTSUREWHATGOESHERE???..WANT TO STORE RSSI)]; 
           } 
      
          //Send array to console 
          NSLog (@"%@", [self rssiArray]); 
      
  • +0

    (당신이 @synthesize를 제거하면 _rssiArray을 것)에 액세스 할 수있는 습관을해야 선언이되어 @synthesize 지시를 필요로하지 않으며 문맥에 표시된'rssiArray'의? 즉. 이 메소드가 실행될 때마다'rssiArray'를 다시 초기화합니까? 그렇다면 문제가됩니다. 그렇지 않다면 문맥에 전체 메서드 및 배열 선언을 표시하십시오. – Paulw11

    +0

    @ Paulw11 - 질문이 반영되도록 코드가 업데이트되었습니다. 미리 감사드립니다. – pimppatty

    +0

    그래서 배열을 매번 초기화하는 것처럼 보입니다. 즉, 이전 값을 효과적으로 버리게됩니다. 이 코드는'didRangeBeacons'에 있습니까? – Paulw11

    답변

    0

    rssi를 저장하는 단순한 접근 방식은 다음과 같습니다. -

    - (void)locationManager:(CLLocationManager *)manager 
         didRangeBeacons:(NSArray *)beacons 
           inRegion:(CLBeaconRegion *)region { 
    
        for (CLBeacon *beacon in beacons) { 
         [self.rssiArray addObject:[NSNumber numberWithInteger:beacon.rssi]]; 
        } 
    } 
    

    내가 이것을 간단하게 말하는 이유는 그들이 어떤 비컨을 가져 왔는지에 관계없이 단순히 배열에 rssi 값을 저장한다는 것입니다. 한 번에 하나의 비콘 만 조사하면 문제가되지 않습니다 . 그런데

    , 당신은 더 이상 self를 통해 속성을 참조하는 대신 기본 바르

    관련 문제