Может ли кто-нибудь сказать мне, где я буду ошибаться здесь, пожалуйста. Я создал NSobject под названием BeaconData. Заголовочный файл:Objective C Глобальная переменная
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import <CoreBluetooth/CoreBluetooth.h>
@interface BeaconData : NSObject
@property (nonatomic, strong) NSMutableArray * jsonArray;
@property (nonatomic, retain) NSString * bMajor;
@property (nonatomic, retain) NSString * bMinor;
@property (nonatomic, retain) NSString * bUUID;
-(void) getData;
@end
Файл реализации затем:
#import "BeaconData.h"
#define getDataURL @"http://www.eventav.biz/websitebeacons/library/json/files/beacons.txt"
@implementation BeaconData
@synthesize jsonArray, bUUID, bMajor, bMinor;
//Retrieve data
-(void) getData
{
extern NSString * bUUID;
extern NSString * bMajor;
extern NSString * bMinor;
NSURL * url = [NSURL URLWithString:getDataURL];
NSData * data = [NSData dataWithContentsOfURL:url];
jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
//Loop through Json Array
for (int i = 0; i < jsonArray.count; i++)
{
bUUID = [[jsonArray objectAtIndex:i] objectForKey:@"i_uuid"];
bMajor = [[jsonArray objectAtIndex:i] objectForKey:@"i_major"];
bMinor = [[jsonArray objectAtIndex:i] objectForKey:@"i_minor"];
}
}
@end
Далее я пытаюсь вызвать глобальную переменную bMajor в главном файле viewController.m и распечатать его - просто чтобы посмотреть, он работает, как это:
- (void)viewDidLoad {
[super viewDidLoad];
extern NSString * bMajor;
NSInteger beaconMajorInt = [bMajor integerValue];
NSLog (@"Beacon bMajor is %li", (long)beaconMajorInt);
Но все это я получаю следующее сообщение об ошибке:
UNDEF ined символы для архитектуры x86_64: «_bMajor», ссылка от: - [ViewController viewDidLoad] в ViewController.o ld: символы (символы) не найдены для архитектуры x86_64 clang: ошибка: команда компоновщика завершилась с кодом выхода 1 (используйте -v, чтобы увидеть вызов)
Это не глобальный вопрос, почему вы думаете, что это/хотите? – Wain
Почему это не глобально? Вот в чем вопрос. Если я просто инициализирую переменную напрямую без массива - NSString * bMajor = @ "47008"; вот так - тогда это работает. – Mike
Это не глобальная переменная. Это свойство, значение которого специфично для данного экземпляра объекта BeaconData. – rmaddy