【发布时间】:2018-05-19 09:57:50
【问题描述】:
我有一个 React Native 项目仍在 0.40.0 上,当我尝试在 XCode for Simulator 中构建时:
Ordered comparison between pointer and zero ('NSNumber *' and 'int')
在文件RCTJavaScriptLoader.mm 中React.xcodeproj > React > Base
因为这个错误发生在 React Native 文件中,我不知道它试图告诉我什么。代码块是:
- (NSString *)description
{
NSMutableString *desc = [NSMutableString new];
[desc appendString:_status ?: @"Loading"];
if (_total > 0) { // ERROR HAPPENS HERE
[desc appendFormat:@" %ld%% (%@/%@)", (long)(100 * [_done integerValue] / [_total integerValue]), _done, _total];
}
[desc appendString:@"\u2026"];
return desc;
}
我试图清理项目,我什至删除了 ios 文件夹并使用 react-native upgrade 重新生成它,但在我链接所有内容后它没有帮助。
【问题讨论】:
-
if (_total > 0)=>if ([_total integerValue]>0)因为_total是NSNumber,所以你不能做if (myNumber > 0),这没有意义。正如你所做的那样,使用integerValue或floatValue等)。 -
@Larme 你说的没错,但这是 React Native 的库代码,我什么也没写,这就是为什么它对我来说很奇怪,而且错误可能与 react native 相关
-
如果您查看当前版本,它已修复:github.com/facebook/react-native/blob/master/React/Base/… 自 3 卷起:github.com/facebook/react-native/commit/… 在 v0.51.0-rc.3 版本上。所以我会升级你的版本。可能的解决方案是对其进行子类化,并覆盖/编写您自己的
description,并仅调用您的版本,但这是一个猜测(内部调用可以调用它)。 -
@Larme 奇怪的是它现在才出现,因为该应用程序已经运行了一年多,但我会尝试更新项目,感谢您指出
标签: c++ ios objective-c react-native