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);
}
Другие вопросы по тегам