У меня есть код ниже, который просто читает кучу карточек и вводит их имена в Mutable Array, если они не присутствуют заранее.Почему объект в этом объектном C-коде не задан?
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSMutableArray *allCards = [[NSMutableArray alloc] init];
char cardAvailable = '\0';
do {
Card *newCard = [[Card alloc] init];
NSLog(@"What is the Card Name ?\n");
char cName[20];
scanf("%s",cName);
NSString *nName = [NSString stringWithCString:cName encoding:1];
[newCard setName:nName];
if([newCard wasMatch:allCards]) {
NSLog(@"Card Already Present");
} else {
NSLog(@" NEW CARD NAME %@ %@ %s",[newCard getName],newCard.name, cName);
[newCard addGlobal:newCard toArray:allCards];
}
NSLog(@"Is there another Card to Input?");
scanf("%c",&cardAvailable);
} while(cardAvailable != 'N' || cardAvailable != 'n');
NSLog(@":::: Card Names Are ::::");
for(Card *card in allCards)
{
NSLog(@"%@",card.name);
}
}
return 0;
}
Однако, во-первых - имя просто НЕ SET. Я не знаю, почему это происходит. Сегодня был мой первый день с Objective C, поэтому, пожалуйста, простите меня, если это слишком просто.
Файлы классов карты являются -
#import <Foundation/Foundation.h>
@interface Card : NSObject
@property(nonatomic) BOOL chosen;
@property (nonatomic, getter = getName) NSString *name;
-(BOOL)wasMatch:(NSMutableArray*) allCards;
-(void)addGlobal:(Card*) aCardName toArray:(NSMutableArray*) allCards;
-(void)setName:(NSString *)name;
-(void)setChosen:(BOOL)chosen;
@end
Я получаю ошибку здесь - в оных глобальную линию.
#import "Card.h"
@implementation Card
@synthesize chosen = _chosen;
-(BOOL)chosen
{
return _chosen;
}
-(void)setChosen:(BOOL)chosen
{
_chosen = chosen;
}
@synthesize name = _name;
-(NSString*)getName
{
return _name;
}
-(void)setName:(NSString*)name
{
name = _name;
}
-(BOOL)wasMatch:(NSMutableArray *)allCards
{
for(Card *card in allCards)
{
if([self.name isEqualToString:card.name])
{
return true;
}
}
return false;
}
-(void)addGlobal:(Card *)aCardName toArray:(NSMutableArray *)allCards
{ NSLog(@" THE NS STRING %@",aCardName.name);
[allCards addObject:aCardName.name];
}
@end
Отличный ответ. Большое спасибо. Любой ресурс, который вы бы рекомендовали? –