Ios cfuuid数组?
这是我的密码:Ios cfuuid数组?,ios,uuid,Ios,Uuid,这是我的密码: - (void)peripheralManager:(CBPeripheralManager *)peripheralManager central:(CBCentral *)central didSubscribeToCharacteristic:(CBCharacteristic *)characteristic { [self.centralManager retrievePeripherals:@[central.UUID]]; } 我得到一个错误: Colle
- (void)peripheralManager:(CBPeripheralManager *)peripheralManager central:(CBCentral *)central didSubscribeToCharacteristic:(CBCharacteristic *)characteristic
{
[self.centralManager retrievePeripherals:@[central.UUID]];
}
我得到一个错误:
Collection element of type 'CFUUIDRef' (aka 'const struct __CFUUID *') is not an Objective-C object
我该怎么办?我的建议是将其转换为NSString并将其添加到数组中
+ (NSString *)convertUUID:(CFUUIDRef)theUUID
{
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge_transfer NSString *)string;
}
我的建议是将其转换为NSString并将其添加到数组中
+ (NSString *)convertUUID:(CFUUIDRef)theUUID
{
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge_transfer NSString *)string;
}
尝试将其转换为Objective-C对象:
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault, yourUUID);
NSString *uuidNSString = (__bridge NSString *)uuidString;
如果你需要它回来:
CFUUIDRef uuid = CFUUIDCreateFromString(kCFAllocatorDefault, uuidString);
尝试将其转换为Objective-C对象:
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault, yourUUID);
NSString *uuidNSString = (__bridge NSString *)uuidString;
如果你需要它回来:
CFUUIDRef uuid = CFUUIDCreateFromString(kCFAllocatorDefault, uuidString);
问题:
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault,@[central.UUID]);
NSString *uuidNSString = (__bridge NSString *)uuidString;
编译器只知道类型,不知道运行时行为。它不知道-最可能-<代码> CFUUIDRF 可以像任何普通Objto-C对象一样使用(虽然它并没有正式的免费桥接基础类对应)。它只看到const struct\uu CFUUID
不是Objective-C类,它退出了
解决方案:
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault,@[central.UUID]);
NSString *uuidNSString = (__bridge NSString *)uuidString;
I.我认为这会起作用-刚刚尝试过,它确实起作用,CFUUID
甚至在使用NSLog()打印时有一个很好的描述。
但是,它没有文档记录。只需将其转换为id
,如下所示:
@[(__bridge id)central.UUID]
二,。是的,您可以将其转换为字符串,但这也不会使编译器错误消失-您确实需要该类型转换,因为编译器会对不兼容的类型产生怪癖:
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault,@[central.UUID]);
NSString *uuidNSString = (__bridge NSString *)uuidString;
现在,这保证会起作用。问题:
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault,@[central.UUID]);
NSString *uuidNSString = (__bridge NSString *)uuidString;
编译器只知道类型,不知道运行时行为。它不知道-最可能-<代码> CFUUIDRF 可以像任何普通Objto-C对象一样使用(虽然它并没有正式的免费桥接基础类对应)。它只看到const struct\uu CFUUID
不是Objective-C类,它退出了
解决方案:
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault,@[central.UUID]);
NSString *uuidNSString = (__bridge NSString *)uuidString;
I.我认为这会起作用-刚刚尝试过,它确实起作用,CFUUID
甚至在使用NSLog()打印时有一个很好的描述。
但是,它没有文档记录。只需将其转换为id
,如下所示:
@[(__bridge id)central.UUID]
二,。是的,您可以将其转换为字符串,但这也不会使编译器错误消失-您确实需要该类型转换,因为编译器会对不兼容的类型产生怪癖:
CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault,@[central.UUID]);
NSString *uuidNSString = (__bridge NSString *)uuidString;
现在,这保证会起作用。在CFUUIDCreateString中查看第二个参数。同样在第一行中,您仍然在CF中。仍然不是对象。请参阅下面的答案以了解完整转换。这不是您的CFUUID吗?请查看CFUUIDCreateString中的第二个参数。同样在第一行中,您仍然在CF中。仍然不是对象。请参阅下面我的答案以了解完整转换。这不是您的CFUUID吗?很抱歉,我关注的是类型问题,真正的问题是将CF项添加到nsarray中。我戴着眼罩,无视我的反应。但是,如果您确实需要在某个时候进行转换,它是有用的。抱歉,我重点讨论了类型问题,真正的问题是将CF项添加到nsarray中。我戴着眼罩,无视我的反应。但是,如果您确实需要在某个时候转换,它是有用的。要搞乱您,有一个+1.:)@杰基,谢谢!请不要:PTo惹你,这里有+1.:)@杰基,谢谢!请不要:P