将文本字段中的字符串存储为播放器名称目标C.

时间:2014-02-27 05:11:27

标签: objective-c

我正在尝试让多个玩家参与卡片匹配游戏。我创建了一个名为Player的NSObject子类。 Player对象将具有名称,高分,最后分数,并且布尔值当前正在播放实例。每次在文本字段中输入新名称时,我都会尝试创建一个新的播放器。我稍后会努力存放球员。现在我只想创建一个新玩家,让用户在文本字段中输入他们的名字。并将用户的响应存储在文本字段中。以下是我的Player.m文件

    #import "Player.h"

    @implementation Player

    -(NSString *) nameOfPlayer:(Player *)playerName{
        return self.name;
    }

    -(void) setPlayerName:(NSString *) nameOf{
        self.name = nameOf;
        self.lastScore = 0;
        self.highestScore = 0;
        self.playing = YES;
        return;
    }

    -(id)init{
        self = [super init];
        self.name = @"";
        self.lastScore = 0;
        self.highestScore = 0;
        self.playing = YES;
        return self;
   }

   @end

在我尝试在线寻找解决方案之前,我原本没有初始化。我对iOS编码有点新,所以我不确定如何设置构造函数(或者如果他们甚至有那些)。下面是我尝试实例化Player对象的方法:

    - (IBAction)handleButtonClick:(UIButton *)sender {
        Player * friend = nil;
        nameText = self.nameEntryField.text;
        [friend setPlayerName:nameText];
        NSLog(@"%@", [friend nameOfPlayer:friend]);
    }

我的应用程序在尝试setPlayerName后立即中断其线程。我有点坚持这一点,所以任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

- (IBAction)handleButtonClick:(UIButton *)sender {
        Player * friend = [[Player alloc] init]; // Initialize this
        nameText = self.nameEntryField.text;
        [friend setPlayerName:nameText];
        NSLog(@"%@", [friend nameOfPlayer:friend]);
 }

你做过像Player * friend = nil;这意味着这是零对象。然后你试图在nil对象上使用方法setPlayerName:。因为这个应用程序休息。

因此,您需要使用[[Player alloc] init]初始化对象。

答案 1 :(得分:0)

这很令人尴尬。我不熟悉xCode IDE,并且意外地为断点选择了该行代码。在上一个答案之后,代码很好。