iOS5 中的 RegexKitLite
我的应用程序中需要 RegexKitlite 作为字符串验证的一部分。 还添加了 libicucore.A.dylib 。 目前使用 xcode 4.2、Base sdk iOS 5.0、Apple LLVM 编译器 3.0、架构 armv7。 将 regexkit 文件夹添加到我的应用程序中会导致太多错误,例如 自动引用计数错误, 将 Objective-C 指针类型“NSString *”转换为 C 指针类型“CFStringRef”等
请帮忙;我哪里出错了。
I need RegexKitlite in my App as a part of String validation.
Have also added libicucore.A.dylib .
Currently working with xcode 4.2,Base sdk iOS 5.0,Apple LLVM compiler 3.0,architechture armv7.
Adding the regexkit folder to my app, causes too many errors like
Automatic Reference Counting Errors ,
Cast of Objective-C pointer type 'NSString *' to C pointer type 'CFStringRef' etc
Please help;where have I gone wrong.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您还可以仅通过添加标志来禁用 RegexKitLite 的 ARC:
选择项目 ->您的目标 ->在“构建阶段”选项卡上,打开“编译源”并为“RegexKitLite.m”添加标志“-fno-objc-arc”。
更新:
如果您得到:
未定义的符号:
“_uregex_reset”,引用自:
RegexKitLite.o 中的 _rkl_splitArray
RegexKitLite.o 中的 _rkl_replaceAll
“_uregex_appendTail”,引用自:.......
然后您需要在“Build Settings”选项卡中添加 -> “链接”-> “其他链接器标志”“-licucore”
You can also disable the ARC for the RegexKitLite only by adding a flag:
select the project -> YOUR Target -> on the Tab the "Build Phases" and open the "Compile Sources" and add for "RegexKitLite.m" the flag "-fno-objc-arc".
Update:
If you get:
Undefined symbols:
"_uregex_reset", referenced from:
_rkl_splitArray in RegexKitLite.o
_rkl_replaceAll in RegexKitLite.o
"_uregex_appendTail", referenced from:.......
Then you need to add in the Tab "Build Settings" -> "Linking" -> "Other Linker Flags" the "-licucore"
你没有做错任何事。 Regexkit 只是还没有更新到 iOS 5。 iOS 5 中的重大变化是不再保留、发布或自动发布。每个内存事情都是自动的,就像 Java 一样。 (除了它发生在编译时而不是运行时。所以它在概念上类似于 Java。大多数情况下。)
无论如何,您可以使用 NSRegularExpression,而不是等待 Regexkit 更新。使用苹果产品也是面向未来的,因为他们不断更新自己的产品版本。
祝你好运!
You aren't doing anything wrong. Regexkit just hasn't been updated to iOS 5 yet. The big change in iOS 5 is there are no longer retains, releases, or autoreleases. Every memory thing is automatic like Java. (Except that it happens at compile time instead of run time. So it's conceptually like Java. Mostly.)
Anyway, instead of waiting for Regexkit to update you can use NSRegularExpression. Using Apple stuff is also future-proof since they keep their own stuff updated version to version.
Good luck!
CB格雷厄姆是对的。或者,您可以禁用自动引用计数(项目 > 构建设置 > 搜索“自动引用计数”)。
显然,您必须进行手动引用计数,但 RegexKitLite 现在应该构建......
CBGraham is right. Alternatively, you could disable automatic reference counting (Project > Build settings > search for 'automatic reference counting').
You will obviously have to do manual reference counting, but RegexKitLite should build now...
我用两种方法替换了 RegexKitLite。
字符串结果:
结果数组:
I replaced RegexKitLite with there two methods.
String Results:
Array of Results: