Я сейчас строил NSMutableArray
в Класс A.m в пределах ViewDidLoad
Метод.Где я могу реализовать этот массив?
- (void)viewDidLoad
{
[super viewDidLoad];
//Question Array Setup and Alloc
stratToolsDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:countButton,@"count",camerButton,@"camera",videoButton,@"video",textButton,@"text",probeButton,@"probe", nil];
stratTools = [[NSMutableArray alloc] initWithObjects:@"Tools",stratToolsDict, nil];
stratObjectsDict = [[NSMutableDictionary alloc]initWithObjectsAndKeys:stratTools,@"Strat1",stratTools,@"Strat2",stratTools,@"Strat3",stratTools,@"Strat4", nil];
stratObjects = [[NSMutableArray alloc]initWithObjects:@"Strategies:",stratObjectsDict,nil];
QuestionDict = [[NSMutableDictionary alloc]initWithObjectsAndKeys:stratObjects,@"Question 1?",stratObjects,@"Question 2?",stratObjects,@"Question 3?",stratObjects,@"Question 4?",stratObjects,@"Question 5?", nil];
//add strategys to questions
QuestionsList = [[NSMutableArray alloc]init];
for (int i = 0; i < 1; i++) {
[QuestionsList addObject:QuestionDict];
}
NSLog(@"Object: %@",QuestionsList);
В конце этого метода вы увидите QuestionsList инициализации и теперь мне нужно отправить этот Array
к класса B.
Поэтому я поместил его и getters
с использованием методов @property
и @Synthesize
. Класс А
@property (retain, nonatomic) NSMutableDictionary *stratToolsDict;
@property (retain, nonatomic) NSMutableArray *stratTools;
@property (retain, nonatomic) NSMutableArray *stratObjects;
@property (retain, nonatomic) NSMutableDictionary *QuestionDict;
@property (retain, nonatomic) NSMutableArray *QuestionsList;
Класс Am
@synthesize QuestionDict;
@synthesize stratToolsDict;
@synthesize stratObjects;
@synthesize stratTools;
@synthesize QuestionsList;
Я использую метод собственности, потому что я буду называть эту переменную из класса B и хотите, чтобы иметь возможность присвоить его другой NSMutableArray
.
Я затем добавить @property
и @class
для класса А к класса B.h, а также объявить NSMutableArray
в @interface.
#import "Class A.h"
@class Class A;
@interface Class B : UITableViewController<UITableViewDataSource, UITableViewDelegate>{
NSMutableArray *QuestionList;
Class A *arrayQuestions;
}
@property Class A *arrayQuestions;
Тогда я называю NSMutableArray
из класса А в класс B.m
-(id)initWithStyle:(UITableViewStyle)style
{
if ([super initWithStyle:style] != nil) {
//Make array
arrayQuestions = [[Class A alloc]init];
QuestionList = arrayQuestions.QuestionsList;
Сразу после этого я Регистрирует NSMutableArray
для просмотра значений и убедитесь, что они есть, и она возвращает NIL
.
//Log test
NSLog(@"QuestionList init method: %@",QuestionList);
Информация о Класс B - Класс B является UIPopOverController
для класса А, Класс B имеет один вид, который держит UITableView
, который я должен заполнить результаты класса А-хNSMutableArray
.
Почему NsMutableArray
возвращается как NIL
? В конечном итоге мне хотелось бы помочь понять, как это сделать, похоже, меня действительно смущает. Помощь с благодарностью!
Ваша ошибка в том, что вы можете выделить/инициализировать экземпляр класса, и он чудесным образом получит доступ к значениям в других экземплярах этого класса. –
Должен ли я использовать метод singleton для решения этого? по какой-то причине это действительно меня озадачило. @HotLicks – Keeano
@KeeanoMartin Singletons не решает проблемы, они создают глобальное состояние. – CodaFi