0

添加SightingViewControler.h

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

添加SightingViewControler.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];

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

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

4

3 回答 3

2

这个:

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

应该:

NSUInteger valor = [[self.estrenoInput text] integerValue];
于 2013-12-13T15:37:21.010 回答
0

这样做的一个好方法是使用 NSNumber 从文本字段的字符串值中解析 longLongValue,然后对 NSNumber 使用您感兴趣的类型的方法:

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

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

于 2014-04-01T20:30:00.773 回答
0

我会说你应该调查一下NSNumberFormatter,除非你确定他们只能输入数值(比如键盘限制)。NSString'sintegerValue将在非数字条目的情况下返回零。如果可以,那就太好了,但是如果您需要知道该值是否有效,则如果无法转换,NSNumberFormatter numberFromString:则将返回。nil

苹果文档: https ://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/classes/NSNumberFormatter_Class/Reference/Reference.html

于 2014-04-01T21:24:37.947 回答