gpt4 book ai didi

swift - 无法将类型 'NSObject' 的值转换为预期参数类型 'NSObject!'

转载 作者:行者123 更新时间:2023-11-30 11:23:14 35 4
gpt4 key购买 nike

我正在将我的整个项目从 Objective-C 转换为 Swift...在转换时我遇到了这个问题:“无法将‘Facility’类型的值转换为预期的参数类型“Facility!”

错误出现在我提到的最后一个转换的文件代码中,这在评论中提到。

“无法将“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

TheFacilityDataModel.m 文件具有方法:

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

现在转换为 swift 的“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 类...并且它也在头文件中导入...其余所有设置也得到照顾并且很好......除了这个之外没有其他问题......

最佳答案

看起来您在 objc 代码中有一个名称相同的类。

您需要重命名其中一个,因为编译器无法解析具有相同名称的两个类

关于swift - 无法将类型 'NSObject' 的值转换为预期参数类型 'NSObject!',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51060871/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com