我在自定义静态库CommonLib中扩展NSString:
//NSString+ext.h
#import <Foundation/Foundation.h>
@interface NSString (ext)
- (BOOL)isContainsEmoji;
@end
//NSString+ext.m
#import "NSString+ext.h"
@implementation NSString (ext)
- (BOOL)isContainsEmoji{
//Do Something...
}
@end
因为CommonLib包含一些Swift代码文件,所以我创建了一个桥接头文件CommonLib桥接头文件。h在CommonLib项目中:
//in CommonLib-Bridging-Header.h
#import "NSString+ext.h"
接下来,我将CommonLib链接到我的应用程序项目,并创建一个新的文件节点。swift应用内项目:
//Node.swift
import Foundation
import CommonLib
class Node{
var name:String!
var isBadName:Bool{
let tmpString = name as NSString
return tmpString.isContainsEmoji()
}
}
最后,我在我的应用程序中使用它:
//In my UIViewController class
override func viewDidAppear(...){
super.viewDidAppear(...)
let node = Node()
node.name = "panda hopy"
print("\(node.isBadName)") //Crash in this line!!!
}
此时编译就可以了!!!但当我运行应用程序时,它崩溃了:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[Swift.\n连续字符串IsContainesMoji]:未识别的选择器发送到实例0x60400084b340”
这里有什么问题吗???如何修复它???谢谢;)
(附注:我的环境Xcode 9.3.1 swift 4.1)