尝试在运行时将所有RSSI值存储在NSMutablearray中,然后最终输出到控制台。已将x的值更改为20000以查看RSSI的值是否有任何更改...遗憾的是,没有更改 - Xcode报告在代码开头读取的20000个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]);
数组在同一个文件的顶部合成,如下所示:
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
#import "DetailViewController.h"
@interface ViewController ()
{
}
@end
@implementation ViewController
@synthesize rssiArray;
该数组也在ViewController.h中定义:
//array for storing RSSI values
@property (strong, nonatomic) NSMutableArray *rssiArray;
@PaulW
所以......
在ViewController.m中初始化数组,如下所示:
- (void)viewDidLoad
{
[super viewDidLoad];
rssiArray = [[NSMutableArray alloc] initWithObjects:nil];
}
将以下代码粘贴到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 :(得分: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值存储到一个数组中,无论它们来自哪个信标 - 只要你一次只测量一个信标,这就不会是问题
顺便说一下,你不再需要@synthesize
指令,你应养成通过self
引用属性的习惯,而不是访问底层的iVar(如果是_rssiArray
你删除了@synthesize
)