以下崩溃困扰着我:
for( BLECharacteristic *chara in characteristics)
{
NSString *s = chara.uuid;
CBUUID *uuid = [CBUUID UUIDWithString: (chara.uuid)]; // can't do this?
[uuids addObject:uuid];
}
我的BLEC特征类是:
#import <Foundation/Foundation.h>
@interface BLECharacteristic : NSObject
@property NSString *uuid;
@property bool shouldNotify;
- (void)setId:(NSString *)thisId;
@end
该值不是,我将其设置为其他位置只是一个NSString,通常类似于:&#34; 713D0003-503E-4C75-BA94-3148F18D941E&#34;。实际上甚至是:
CBUUID *uuid = [CBUUID UUIDWithString:@"713D0003-503E-4C75-BA94-3148F18D941E"];
完全正常,但我希望事情更具可配置性和动态性。
我猜这对于真正了解ObjC的人来说非常简单,但我是一个低级的C / C ++家伙,我很困惑为什么我无法获得有效价值并将其传递给这个方法来创建一个CBUUID。
答案 0 :(得分:1)
因为你已经将s分配为NSString,所以首先是NSLog它的值。如果它有效,则使用UUIDWithString:s。为了更安全并避免因nill或NULL值而导致崩溃,请分配NSString * s = [NSString stringWithFormat:@“%@”...]。在处理值之前,不要忘记为您的NSString分配init。