Objective-C NSArray - PullRequest
       4

Objective-C NSArray

0 голосов
/ 20 июля 2010

Я новичок в Obj-C и iPhone SDK. Тестовое приложение, с которым я работаю, представляет собой переключатель цвета, содержащий две кнопки («Назад», «Вперед») и одну текстовую метку. Идея состоит в том, чтобы переключаться между цветами радуги (фон) и циклически устанавливать соответствующую текстовую метку.

Я объявил NSArray (который должен содержать имена цветов) в RainbowViewController.h, синтезировал его в RainbowViewController.h и не могу добавить строку в этот массив.

Это файл "h":

#import <UIKit/UIKit.h>

@interface RainbowViewController : UIViewController {
    IBOutlet UILabel *currentColorTextLabel;
    NSArray *colorsArray;
    NSString *msg;
}

@property (nonatomic, retain) IBOutlet UILabel *currentColorTextLabel;
@property (nonatomic, retain) NSArray *colorsArray;
@property (nonatomic, retain) NSString *msg; 

- (IBAction) pressForwardButton;
- (IBAction) pressBackButton;

@end

Это файл "m":

#import "RainbowViewController.h"
#import <Foundation/Foundation.h>

@implementation RainbowViewController

@synthesize currentColorTextLabel;
@synthesize colorsArray;
@synthesize msg;

int currentArrayIndex = 0;

colorsArray = [[NSArray alloc] init]; //here i get "Initializer element is not constant" error message
[coloursArray addObject:@"Red"]; //here I get "Expected identifier or '(' before '[' token"
[coloursArray addObject:@"Orange"];
//etc

- (IBAction) pressForwardButton {
    //here I'm going to increment currentArrayIndex, set an appropriate color, and update a currentColorTextLabel based on currentArrayIndex.
}

- (IBAction) pressBackButton {

}

//auto-genereted code here
@end

Ответы [ 3 ]

3 голосов
/ 20 июля 2010

Я также новичок в obj-c, но я думаю, что вам нужно инициализировать массив с объектами или использовать NSMutableArray, если вы хотите добавить объекты после его создания.

2 голосов
/ 20 июля 2010

У вас есть код, который должен идти в вашем методе init, просто сидя в середине файла.Вы не можете установить такие переменные экземпляра.

1 голос
/ 18 сентября 2012

jasongetsdown является правильным.Вам нужно создать экземпляр объекта NSArray с объектами, которые он будет содержать, и завершить nil.

@"Red", @"Blue", nil

Если вы хотите иметь массив, который вы можете изменить, вам нужно сделать его изменяемым массивом.

Однако у вас есть другая проблема.Ваше свойство, которое вы синтезируете и выделяете, является объектом с именем colorsArray, и вы пытаетесь передать метод объекту coloursArray, два разных написания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...