Objective -C - 将UITextField文本转换为NSUInteger

时间:2013-12-13 15:35:46

标签: ios objective-c input uitextfield nsuinteger

AddSightingViewControler.h

@property (weak, nonatomic) IBOutlet UITextField *estrenoInput;

AddSightingViewControler.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"ReturnInput"]) {
        if ([self.movieTitleInput.text length] || [self.generoInput.text length] || [self.directorInput.text length]|| [self.estrenoInput.text length] )
        {
            MovieSighting *sighting;
            NSUInteger *valor = (NSUInteger *)[[self.estrenoInput text] integerValue];
            sighting = [[MovieSighting alloc] initWithName:self.movieTitleInput.text anyo:valor genero:self.generoInput.text director:self.directorInput.text];
            self.movieSighting = sighting;
        }
    }
}

我用这个:NSUInteger *valor = (NSUInteger *)[[self.estrenoInput text] integerValue];

转换它,但是当我点击完成时,应用退出。

有人做了不同的转换器吗?

3 个答案:

答案 0 :(得分:2)

此:

NSUInteger *valor = (NSUInteger *)[[self.estrenoInput text] integerValue];

应该是:

NSUInteger valor = [[self.estrenoInput text] integerValue];

答案 1 :(得分:0)

执行此操作的一种好方法是使用NSNumber从文本字段的字符串值解析longLongValue,然后在NSNumber上使用您感兴趣的类型的方法:

NSNumber *number = [NSNumber numberWithLongLong: textField.text.longLongValue];
NSUInteger value = number.unsignedIntegerValue;

将整数强制转换为NSUInteger仅适用于最大为INT_MAX的数值,最终会遗漏可能的NSUInteger值(2137483648至4274967295)。

答案 2 :(得分:0)

我会说你应该调查NSNumberFormatter,除非你确定他们只能输入数值(例如键盘限制)。 NSString的{​​{1}}在非数字输入的情况下将返回零。如果可以,那么很好,但是如果您需要知道值是否有效integerValue如果无法转换则会返回NSNumberFormatter numberFromString:

Apple Docs: https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/classes/NSNumberFormatter_Class/Reference/Reference.html