0

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];

それを変換しますが、[完了] をクリックするとアプリが終了します。

別のコンバーターを使用した人はいますか?

4

3 に答える 3

0

NSNumberFormatter数値しか入力できないことが確実でない限り(キーボードの制限など)、調査する必要があると思います。NSStringは、数値以外のエントリのintegerValue場合はゼロを返します。それが問題ない場合は素晴らしいですが、値が有効かどうかを知る必要がある場合は、変換できなかった場合にNSNumberFormatter numberFromString:返されます。nil

Apple ドキュメント: https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/classes/NSNumberFormatter_Class/Reference/Reference.html

于 2014-04-01T21:24:37.947 に答える
0

これを行う良い方法は、NSNumber を使用して textfield の文字列値から longLongValue を解析し、関心のある型に対して NSNumber のメソッドを使用することです。

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

NSUInteger への整数のキャストは、可能な NSUInteger 値 (2137483648 から 4274967295) を除外する INT_MAX までの数値に対してのみ機能します。

于 2014-04-01T20:30:00.773 に答える