UITextField для iBeacon Major Xcode
У меня есть UITextField "userId", который имеет четырехзначное число, то есть 4578.
Я хотел бы преобразовать это в сопоставимый формат, чтобы я мог использовать его в значении iBeacon.major.
Я перепробовал множество способов моего последнего бытия:
long long myLongLong = [userId.text longLongValue];
NSNumber *anumber = [NSNumber numberWithLongLong:myLongLong];
NSUUID * uid2 = [[NSUUID alloc] initWithUUIDString:@"INTT1345-2C29-40E0-8E1E-1D7A9E5D0964"];
self.beaconRegion2 = [[CLBeaconRegion alloc] initWithProximityUUID:uid2
major:anumber
identifier:@"IDENTIFIER"];
но ни один из них не сработал, я продолжаю получать следующую ошибку.
incompatable pointer to interger conversion sending 'NSNumber *_strong' to parameter of type 'CLBeaconMajorValue' (aka'unsigned short')
может кто-нибудь помочь мне с этим
1 ответ
Решение
Попробуй это:
NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
userIdInt = [formatter numberFromString:self.major.text].intValue;
Перед ARC вы также можете преобразовать текстовое поле в целое число, например:
int userIdInt = [userId.text intValue];
Вы, вероятно, должны сделать некоторую проверку, прежде чем поставить ее в главное значение. Убедитесь, что это не> 65535 или < 0, потому что эти значения недопустимы. Как это:
if (major == nil || major.intValue < 0 || major.intValue > 65535) {
NSLog(@"major is NOT a legal value: %@", major);
}
else {
NSLog(@"major is a legal value: %@", major);
}