我花了很多时间尝试自己解决这个问题,并且已经在SO上仔细检查了可用的答案并且出现了同样的错误。所以这里列出了我已经排除的可能原因:
project.pbxproj
文件(来自我的原始项目和新测试项目),以找到项目设置中的一些差异,所有这些当我转到Report Navigator并查找未成功编译的每个文件时,我发现了一些奇怪的相关性:任何使用NSString
的某些API的文件都无法编译。为了证明这个假设,我发现了一些编译成功的文件并添加了以下代码行
let abc = NSString(string: "abc")
然后此文件也停止编译。
因此,对于某些文件,它表示使用String
投射as NSString
类对象无效,某处NSAttributedString
/ NSString
创建失败,在其他一些地方调用{{1 }}或compare
不正确等等。但是当我将所有导致rangeOfString
错误的代码片段粘贴到我的新项目时,他们成功编译了
当然,该项目仅在一天前使用Xcode 6进行编译
我不知道从哪里开始以及如何解决这些问题,任何帮助都将非常有用
UPD
我上传了不会编译到GitHub
的项目答案 0 :(得分:1)
在" MYHelpers.h / .m"您的项目(可能来自https://github.com/AlexandrGraschenkov/MYHelpers)
定义了具有一些实用方法的NSString
类别:
#pragma mark - NSString+Utils
@interface NSString (Utils)
- (NSString *)trim; // trim whitespace characters with new line
- (NSString *):(NSString *)appendString;
- (NSURL *)toURL;
- (NSString *)URLEncodedString;
- (NSString *)URLDecodedString;
- (NSString *)lightURLEncodeString;
+ (BOOL)emailValidate:(NSString *)email;
- (CGSize)sizeForStringWithFont:(UIFont *)font constrainedToSize:(CGSize)size;
- (id)JSON;
@end
第二种方法
- (NSString *):(NSString *)appendString;
有一个空选择器名称。在Objective-C中允许这样做, 你可以用
调用方法NSString *foobar = [@"foo" :@"bar"];
(我不知道该方法是否有意定义为空 选择器名称 - 我不推荐它。)
但它导致 Swift编译器崩溃。只有在NSString
时才会发生这种情况
在Swift代码中的某处引用。
(无论输入有多么错误,编译器都不应该崩溃,
所以我建议在Apple提交一份错误报告。
您可以将方法重命名为
- (NSString *)appendString:(NSString *)appendString;
(或者,如果您在项目中不需要它,只需删除它), 应该解决这个问题。
答案 1 :(得分:0)