0
  NSString* digit                  = [sender currentTitle];

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

self.display.text                = newDisplayText; 

我会尽力解释我的问题。这行代码从选择的按钮中获取数字,不保存字符串“digit”。“currentDisplayText”获取标签中显示的数字。然后将这两个字符串附加并发送到“显示”(标签)

但也有一个输入按钮。清除显示(因此用户可以输入新数字)这是一个计算器顺便说一句!

- (IBAction)enterPressed{

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

我想要的是显示一个“历史”标签,显示所有输入的数字 - 我还不太明白如何获得我保存“历史”的字符串,而不是像显示那样重置。我可能无法解释这一点,但任何提示都值得赞赏。我还在学习objective-c...

4

2 回答 2

0

我不太了解你,但我敢肯定,如果你想保存你的数据(不是很大),你应该使用 NSUserDeafult 。用于- (void)setObject:(id)anObject forKey:(id)aKey;保存数据。

你想保存历史,如果你想保存最新的历史,你可以- (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 回答