【发布时间】:2018-04-20 07:14:54
【问题描述】:
我有在 Obj-C 中工作的代码,但无法找到通过 NSClassFromString 函数快速使用 Obj-C 的方法:
NSArray *viewControllers = [[self navigationController] viewControllers];
BOOL viewExists = NO;
id obj;
for (int i = 0; i < [viewControllers count]; i ++)
{
obj = [viewControllers objectAtIndex:i];
if ([obj isKindOfClass:NSClassFromString(@"myViewController")])
{
if ([[obj valueForKey:@"synchroRunning"] boolValue])
{
[self performSelectorOnMainThread:@selector(startSpinner) withObject:nil waitUntilDone:NO];
[synchroBtn setHidden:YES];
}
else
{
[self synchroClick:nil];
}
viewExists = YES;
}
}
如果我想使用它:
如果让 vcObj = obj 为?我的视图控制器 通过在网桥中导入#import "myViewcontroller.h" 类,我收到一条错误消息:
<unknown>:0: error: failed to emit precompiled header '/Users/OlostA/Library/Developer/Xcode/DerivedData/Formbox-fpnftywlyjuvvubjjzpknxxdyhul/Build/Intermediates.noindex/PrecompiledHeaders/Formbox-Bridging-Header-swift_7N984CYB20BK-clang_28VAG4OSP9DZS.pch' for bridging header '/Users/OlostA/Desktop/Git/FormBox/formbox/Formbox/Planning/Formbox-Bridging-Header.h'
提前致谢。
【问题讨论】:
-
您的问题不清楚。您问题的 Swift 部分是什么?你想把这个 Objective-C 代码翻译成 Swift 吗?如果是这样,请编辑您的问题以包含您尝试的 Swift 代码。
-
为什么需要
NSClassFromString?为什么不简单地[ViewController class]?无论如何,这应该像if let vcObj = obj as? ViewController一样很好地转换为 Swift。 -
UINavigationController的viewControllers数组在 Swift 中将被键入为[UIViewController],因此根本不需要进行类型检查 -
Losiowaty 因为当我在桥中添加#import "ViewController.h" 时,我有一条错误消息“。我把这条消息放在票证中
标签: ios objective-c swift class swift3