我们正在开发一个cordova插件,我们想构建一个从本机代码运行的回调javascript。
到目前为止摘要,问题在于:
NSString *js = [NSString stringWithFormat:@"project.notificationCallback('%@',%@);",uuidString , value];
这应该构建以下示例:
"project.notificationCallback('uuid-uuid-uuid-uuid-uuid',1);"
它不仅仅返回想要的结果,而是返回:
"project.notificationCallback('uuid-uuid-uuid-uuid-uuid',1"
所以它只是切断了字符串的最后一部分,当我们这样做时:
NSString *js = [NSString stringWithFormat:@"alert('jemoeder')"];
一切正常,所以我们认为它与%@
和未逃避的字符有关。
在房子里有某个 obj-c expert 知道如何逃避这些字符,或者字符串只是几个字符太长了吗?
答案 0 :(得分:0)
如果我执行相同的stringWithFormat操作,我得到: project.notificationCallback( 'UUID-UUID-UUID-UUID-UUID',1);
您确定NSString * js已包含意外结果吗?稍后您的代码中的某些内容可能会限制字符串的长度。
至于NSString问题的最大长度,如果您在本网站右上角的搜索框中发布了“nsstring max length”,那么您已经有了答案(第一个结果)。另外,我建议不要在代码示例中引用一个人的母亲。
答案 1 :(得分:0)
所以发现了错误
结果是从蓝牙gatt服务收到的数据锁。这总是8个字节。
所以十六进制表示是:
0x31000000
转换为字符串这意味着值后面有3个NULL字节,这会阻止NSString格式化程序解析。
摆脱了这些小混蛋,又恢复了工作。
谢谢大家。