在Objective-C类中使用时,无法在debugging区域中看到Swift对象层次结构

我的问题可能很简单,但是我很迷茫。 任何评论,想法,帮助,预测将是如此有用。

这是我的课程

TrialSwiftClass.swift

import Foundation @objc public class TrialSwiftClass : NSObject{ var first : String? var second : NSString? var third : NSNumber = 0 override init(){ super.init() } init(data:NSArray){ self.first = data[0] as? String self.second = data[1] as? NSString self.third = data[2] as! NSNumber } } 

TrialObjectiveCClass.h

 #import <Foundation/Foundation.h> @interface TrialObjectiveCClass : NSObject @property (nonatomic, strong) NSString *first; @property (nonatomic, strong) NSString *second; @property (nonatomic, assign) NSNumber *third; - (instancetype)initWithArray:(NSArray *)data; @end 

TrialObjectiveCClass.m

 #import "TrialObjectiveCClass.h" @implementation TrialObjectiveCClass - (instancetype)initWithArray:(NSArray *)data{ self.first = data[0]; self.second = data[1]; self.third = data[2]; return self; } @end 

现在问题来了。当我在ViewController.m中使用这两个类时,

 #import "ViewController.h" #import "TrialObjectiveCClass.h" #import "Codemaster-Swift.h" //Automatically created header to use Swift code in Objective-C @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSArray *trialArray = @[@"FirstString", @"SecondString", @99]; //First the Swift part TrialSwiftClass *obj = [[TrialSwiftClass alloc] initWithData:trialArray]; NSLog(@"%@", obj.first); NSLog(@"%@", obj.second); NSLog(@"%@", obj.third); //Now the Objective-C part TrialObjectiveCClass *obj2 = [[TrialObjectiveCClass alloc] initWithArray:trialArray]; NSLog(@"%@", obj2.first); NSLog(@"%@", obj2.second); NSLog(@"%@", obj2.third); } 

如果我在ViewController.m中的最后一个NSLog中放置一个断点,这是我在debugging区看到的: 在这里输入图像说明

我的日志显示我的对象的属性的正确值。

为什么我看不到我的Swift类的层次结构,但可以看到我的Objective-C类? 如何解决这个问题呢?

Swift类中的variables暴露给ObjC作为属性。 目前本地人视图不显示对象的属性,只显示其属性。 不pipeclass级是来自ObjC还是Swift,情况都是如此。 这就是为什么swiftvariables不显示在当地人的视图。

您可以通过在lldb控制台中使用expression命令来解决此问题,以查看该对象的属性。 例如,停在你的例子中,你可以这样做:

 (lldb) expr obj.first (__NSCFConstantString *) $0 = 0x00000001002d1498 @"FirstString" 

等等

在这一点你看不到Swift类的层次结构。 当你将swift类连接到一个obj-c文件时,debugging器不能再看到你的属性。 这是一个错误或其他东西,我还不知道。 但是如果你想看到你的层次结构,你可以看到你的Swift文件。

在这里输入图像说明

在这里输入图像说明

另一个解决scheme,如果你创build一个快速的项目,并初始化那里的Objective-C类。 所以如果你能够以相反的方式创build,属性和层次将出现在debugging字段中。

在这里输入图像说明

这不是一个解释,为什么你的解决scheme不工作,但我希望这会帮助你一点点。