5

我无法使用 RegexKitLite 匹配字符串,例如

NSString *encodedPoints=[apiResponse stringByMatching: @"\\\"([^\\\"]*)\\\"^[^:]*" 
                                              capture: 0];

和 apiResponse 是:

@"http://maps.google.com/maps?output=dragdir&saddr=20.001364,73.749283&daddr=19.991499,73.744095"

因此,通过这种方式,我收到以下错误:

__NSCFString stringByMatching:capture:]: 无法识别的选择器发送到实例 0x131fc0

*终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因是: ' - [__ NSCFString stringByMatching:捕获:]:无法识别的选择发送到实例0x131fc0' *第一掷调用堆栈:(0x3422b8bf 0x3447b1e5 0x3422eacb 0x3422d945 0x34188680 0xb97b 0xad2f 0xaa2d 0xa617 0x34185435 0x375ef9eb 0x376b53cf 0x34185435 0x375ef9eb 0x375ef9a7 0x375ef985 0x375ef6f5 0x375f002d 0x375ee50f 0x375edf01 0x375d44ed 0x375d3d2d 0x30a06df3 0x341ff553 0x341ff4f5 0x341fe343 0x341814dd 0x341813a5 0x30a05fcd 0x37602743 0x4571 0x2838)

我试图通过谷歌搜索找到解决方案,但没有得到确切的解决方案。

请帮忙...

4

1 回答 1

8

确保您的项目中包含正确的库。

转到您的项目导航器并选择项目。

单击 Target 并选择 Build Phases 选项卡,然后打开 Link Binary With Libraries。

按 + 按钮,然后搜索 libicucore.A.dylib。将此库添加到您的项目中。

接下来,您需要添加编译源,它位于 Link Binary With Libraries 上方的 Compile Sources 中。再次点击 + 按钮并将RegexKitLite.m添加到目标。如果您尝试在此状态下构建项目,您应该在 RegexKitLite.m 文件中收到很多错误。要更正此问题,请双击 Compile Sources 区域中的RegexKitLite.m文件,然后将 -fno-objc-arc 包含到出现的弹出窗口中,将以下编译器标志添加到文件中。点击完成,您将希望将库源添加到您的项目中。

就像注释一样,在编译该源文件时-fno-objc-arc删除了自动引用计数。没有该编译器标志的文件出现的错误与 ARC 有关,因此它解决了问题。

这解决了我在使用 RegexKitLite 时遇到的问题,希望它对你有用。

于 2012-08-17T23:07:47.477 回答