Я расширяю NSString в моей пользовательской статической библиотеке CommonLib:
//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-Bridging-Header.h в проекте CommonLib:
//in CommonLib-Bridging-Header.h
#import "NSString+ext.h"
Далее я связываю CommonLib с моим проектом приложения и создаю новый файл Node.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._NSContiguousString isContainsEmoji]: нераспознанный селектор, отправленный в экземпляр 0x60400084b340'
1017*
Так что-то здесь не так ???И как это исправить ???Спасибо;)
(PS: моя среда Xcode 9.3.1 swift 4.1)