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];
转换它,但是当我点击完成时,应用退出。
有人做了不同的转换器吗?
答案 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:
。