Obj-C - 使用currentTitle和UILabel.text方法保存所有输入的NSString

时间:2012-07-28 01:25:26

标签: objective-c methods nsstring

  NSString* digit                  = [sender currentTitle];

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

self.display.text                = newDisplayText; 

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

但是还有一个输入按钮。这清除了显示(因此用户可以输入新号码)这是一个计算器btw!

- (IBAction)enterPressed{

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

我想要的是显示一个“历史”标签,显示输入的所有数字 - 我还不太清楚如何获得字符串我也保存了“历史记录”,不像显示那样重置。这可能是由我提出的不好,但任何提示都值得赞赏。我还在学习目标 - ...

2 个答案:

答案 0 :(得分: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;
}

就是这样。

答案 1 :(得分: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];
}