我有下面的代碼,它只是讀一堆卡,並將它們的名稱輸入到可變數組中,如果它們事先不存在的話。爲什麼此Objective 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;
}
但是,第一個 - 名稱簡直沒有設置。我不知道爲什麼會發生這種情況。今天是我第一次使用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
好答案。非常感謝。你會推薦任何資源? –