无法将类型“ NSObject”的值转换为预期的参数类型“ NSObject!”

时间:2018-06-27 10:47:46

标签: swift

我将整个项目从Objective-C转换为Swift ...,同时转换为“无法将'Facility'类型的值转换为预期的参数类型“ Facility!”。

该错误出现在我提到的最后一个转换的文件代码中,该注释中提到了

“无法将“设施”转换为预期的参数类型“设施!”

代码为:

TheFacility.h文件:

#import <Foundation/Foundation.h>

@interface FacilityDataModel : NSObject
- (BOOL)save:(Facility *)facility;
@end

TheFacility.m文件:

#import "FacilityDataModel.h"

@implementation Facility
… // many other methods...

- (void)save
{
    FacilityDataModel *facilityDataModel = [[FacilityDataModel alloc] init];
    [facilityDataModel save:self];
}

… // many other methods...
@end

FacilityDataModel.m文件具有方法:

-(BOOL) save: (Facility *) facility
{
    if ([facility m_ID] == nil)
    {
        NSLog(@“Saving Facility Code”);
        return true;
    }
    return false;
}

现在将转换后的“ Facility.swift”文件转换为:

import Foundation

class Facility: NSObject {
    …
    func save() {
        let facilityDataModel = FacilityDataModel() 
        facilityDataModel.save(self) ///Its showing dialog “Cannot convert “Facility” to expected argument type “Facility!”
    }
    …
}

注意: ,请以一种不会强迫我更改Objective-C代码的解决方案进行答复,因为我想同时使用Swift和Objective-C代码我的项目,不能更改该Objective-C代码。

我现在还没有将DataModel类转换为swift ...所以我必须在swift中使用这个现有的Objective-C DataModel类...并且也导入头文件中...其余所有设置也得到照顾并很好...除了此以外没有其他问题...

1 个答案:

答案 0 :(得分:0)

好像您在objc代码中有一个同名的类。

由于编译器无法解析名称相同的两个类,因此您需要重命名其中之一