Objective C切断了字符串的最后部分

时间:2014-10-08 12:50:53

标签: javascript ios objective-c cordova

我们正在开发一个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 知道如何逃避这些字符,或者字符串只是几个字符太长了吗?

2 个答案:

答案 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格式化程序解析。

摆脱了这些小混蛋,又恢复了工作。

谢谢大家。