0
  NSString* digit                  = [sender currentTitle];

if (self.userIsInTheMiddleOfEnteringANumber){ 
    NSString* currentDisplayText = [[self display]text];
    NSString* newDisplayText     = [currentDisplayText stringByAppendingString:digit];

self.display.text                = newDisplayText; 

できる限り問題を説明しようと思います。このコード行は、ボタンの選択から数字を取得し、文字列「数字」なしで保存します。「currentDisplayText」は、ラベルに表示される数字を取ります。次に、これら 2 つの文字列が追加され、「ディスプレイ」(ラベル) に送信されます。

しかし、入力ボタンもあります。これはディスプレイをクリアします(ユーザーが新しい番号を入力できるようにします)これは電卓です!

- (IBAction)enterPressed{

[self.brain pushOperand:[self.display.text doubleValue]];
self.userIsInTheMiddleOfEnteringANumber = NO;

私が望むのは、入力されたすべての数字を表示する「履歴」ラベルを表示することです-「履歴」も保存して、表示のようにリセットしないように文字列を取得する方法がよくわかりません。これは私の説明が悪いかもしれませんが、ヒントをいただければ幸いです。私はまだObjective-Cを学んでいます...

4

2 に答える 2

0

私はあなたをよく理解していませんでしたが、1つ確かなことは、データを保存したい場合(それほど大きくない)、 NSUserDeafult を使用する必要があることです。を使用- (void)setObject:(id)anObject forKey:(id)aKey;してデータを保存します。

history を取得したい場合、最新の history を保存したい場合は、保存し- (NSString *)stringForKey:(NSString *)defaultName;た文字列を取得するために使用できます。履歴全体を保存したい場合は、保存し- (NSArray *)arrayForKey:(NSString *)defaultName;た配列を取得するために使用できます。

例を挙げてください。文字列を保存する方法

                    if([[NSUserDefaults standardUserDefaults] stringForKey:theKey] == nil)
                    {
                        NSString *defaultValue = [NSString stringWithString:theStringYouWantedSave];
                        NSDictionary *saveDict = [NSDictionary dictionaryWithObject:defaultValue forKey:theKey];
                        [[NSUserDefaults standardUserDefaults] registerDefaults:saveDict];
                    }
                    else
                    {
                        [[NSUserDefaults standardUserDefaults] setObject:theStringYouWantedSave forKey:theKey];
                    }

そしてこうなる

if([[NSUserDefaults standardUserDefaults] stringForKey:theKey]!=nil)
{
    yourHistoryString = [[NSUserDefaults standardUserDefaults] stringForKey:theKey];
}
于 2012-07-28T03:41:34.707 に答える
0

私の理解が正しければ、入力ボタンを押した後に番号を保存してください。このためには、タイプ NSMutableArray の属性をクラスに追加する必要があります。次に、メソッドで次のことを行います。

- (IBAction)enterPressed {
    [myHistoryArrayAttrib addObject: self.display.text]; 

    [self.brain pushOperand:[self.display.text doubleValue]];
    self.userIsInTheMiddleOfEnteringANumber = NO;

    //after this you can clear your display
    self.display.text = nil;
}

それでおしまい。

于 2012-07-28T03:15:46.237 に答える