Ios 使用json文件中的变量设置iBeacon主

Ios 使用json文件中的变量设置iBeacon主,ios,objective-c,json,ibeacon,Ios,Objective C,Json,Ibeacon,我对Objective-C非常陌生,我正在努力解决以下问题: 我有一个从MYSQL数据库工作的web界面,它允许我将信标添加到列表中。每个信标都有一个唯一的主标识符和次标识符,最终可能会有不同的UUID。该网页生成一个简单的json文件,如下所示: [ { "id": "1", "beaconUUID": "B9407F30-F5F8-466E-AFF9-25556B57FE6D", "beaconMajor": "3",

我对Objective-C非常陌生,我正在努力解决以下问题: 我有一个从MYSQL数据库工作的web界面,它允许我将信标添加到列表中。每个信标都有一个唯一的主标识符和次标识符,最终可能会有不同的UUID。该网页生成一个简单的json文件,如下所示:

[
    {
        "id": "1",
        "beaconUUID": "B9407F30-F5F8-466E-AFF9-25556B57FE6D",
        "beaconMajor": "3",
        "beaconMinor": "4"
    }
]
jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

//Setup Beacons Array
beaconsArray = [[NSMutableArray alloc]init];

//Loop through Json Array
for (int i = 0; i < jsonArray.count; i++)
{
    //create Beacon object
    NSString * bID= [[jsonArray objectAtIndex:i] objectForKey:@"beaconID"];
    NSString * bUUID = [[jsonArray objectAtIndex:i] objectForKey:@"beaconUUID"];
    NSString * bMajor = [[jsonArray objectAtIndex:i] objectForKey:@"beaconMajor"];
    NSString * bMinor = [[jsonArray objectAtIndex:i] objectForKey:@"beaconMinor"];

    //add Beacon object to Baecons array
    [beaconsArray addObject:[[Beacon alloc]initWithBeaconUUID:bUUID
                                               andbeaconMajor:bMajor
                                               andbeaconMinor:bMinor
                                                  andbeaconID:bID]];
@implementation Beacon
@synthesize beaconUUID, beaconMajor, beaconMinor, beaconID;

-(id)initWithBeaconUUID: (NSString *)bUUID
     andbeaconMajor: (NSString *)bMajor
     andbeaconMinor: (NSString *)bMinor
        andbeaconID: (NSString *)bID;
  {
    self = [super init];
    if (self)
  {
        beaconUUID = bUUID;
        beaconMajor = bMajor;
        beaconMinor = bMinor;
        beaconID = bID;
  }
    return self;
 }
我希望能够读取中的值并相应地初始化信标,但我无法确定如何生成变量。无论到目前为止我尝试了什么,我只得到实例变量

我创建了如下数组:

[
    {
        "id": "1",
        "beaconUUID": "B9407F30-F5F8-466E-AFF9-25556B57FE6D",
        "beaconMajor": "3",
        "beaconMinor": "4"
    }
]
jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

//Setup Beacons Array
beaconsArray = [[NSMutableArray alloc]init];

//Loop through Json Array
for (int i = 0; i < jsonArray.count; i++)
{
    //create Beacon object
    NSString * bID= [[jsonArray objectAtIndex:i] objectForKey:@"beaconID"];
    NSString * bUUID = [[jsonArray objectAtIndex:i] objectForKey:@"beaconUUID"];
    NSString * bMajor = [[jsonArray objectAtIndex:i] objectForKey:@"beaconMajor"];
    NSString * bMinor = [[jsonArray objectAtIndex:i] objectForKey:@"beaconMinor"];

    //add Beacon object to Baecons array
    [beaconsArray addObject:[[Beacon alloc]initWithBeaconUUID:bUUID
                                               andbeaconMajor:bMajor
                                               andbeaconMinor:bMinor
                                                  andbeaconID:bID]];
@implementation Beacon
@synthesize beaconUUID, beaconMajor, beaconMinor, beaconID;

-(id)initWithBeaconUUID: (NSString *)bUUID
     andbeaconMajor: (NSString *)bMajor
     andbeaconMinor: (NSString *)bMinor
        andbeaconID: (NSString *)bID;
  {
    self = [super init];
    if (self)
  {
        beaconUUID = bUUID;
        beaconMajor = bMajor;
        beaconMinor = bMinor;
        beaconID = bID;
  }
    return self;
 }
在我尝试传入任何json数据之前,这都是有效的,因为根据我的尝试,我只会收到各种类型的未声明错误

我创建了一个单独的Beacon对象,继承自NSObject,如下所示:

[
    {
        "id": "1",
        "beaconUUID": "B9407F30-F5F8-466E-AFF9-25556B57FE6D",
        "beaconMajor": "3",
        "beaconMinor": "4"
    }
]
jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

//Setup Beacons Array
beaconsArray = [[NSMutableArray alloc]init];

//Loop through Json Array
for (int i = 0; i < jsonArray.count; i++)
{
    //create Beacon object
    NSString * bID= [[jsonArray objectAtIndex:i] objectForKey:@"beaconID"];
    NSString * bUUID = [[jsonArray objectAtIndex:i] objectForKey:@"beaconUUID"];
    NSString * bMajor = [[jsonArray objectAtIndex:i] objectForKey:@"beaconMajor"];
    NSString * bMinor = [[jsonArray objectAtIndex:i] objectForKey:@"beaconMinor"];

    //add Beacon object to Baecons array
    [beaconsArray addObject:[[Beacon alloc]initWithBeaconUUID:bUUID
                                               andbeaconMajor:bMajor
                                               andbeaconMinor:bMinor
                                                  andbeaconID:bID]];
@implementation Beacon
@synthesize beaconUUID, beaconMajor, beaconMinor, beaconID;

-(id)initWithBeaconUUID: (NSString *)bUUID
     andbeaconMajor: (NSString *)bMajor
     andbeaconMinor: (NSString *)bMinor
        andbeaconID: (NSString *)bID;
  {
    self = [super init];
    if (self)
  {
        beaconUUID = bUUID;
        beaconMajor = bMajor;
        beaconMinor = bMinor;
        beaconID = bID;
  }
    return self;
 }
我认为这会使变量可用,但没有运气

抱歉,如果我错过了显而易见的内容,但我只学习了Objective-C和XCode几个星期,它比RubyMoon更令人困惑:


任何帮助都将得到感激,因为我正在浪费大量时间试图弄明白这一点

您能否显示您尝试从数组中访问属性的代码?各种类型的错误将得到各种类型的答案。请说得更具体些;你不必理解这些错误意味着什么,这必然是指你自我描述的对环境的新鲜感。截图或日志复制/粘贴可能对回答您的问题有很大帮助。我记不起具体的错误,因为我尝试了很多不同的方法,但它们都告诉我变量不可用,例如使用未声明的标识符“…”我猜这是因为我在主视图控制器中创建了数组,而不是作为单独的单例?Paulw11-我添加了以下内容:NSInteger beaconmajorit=[beaconMajor integerValue];到主视图控制器,然后用major:beaconmajorit替换major值。NSLog@Beacon Majorit为%ld,LongBeaconMajorit;打印Beacon Major是0Ok,我只需将解析数组的代码移到viewDidLoad的开头,然后将字符串转换为整数,就可以解决这个问题。我只是想把数组作为一个单件来解析,这太复杂了。