【发布时间】:2018-06-27 10:47:46
【问题描述】:
我正在将我的整个项目从 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 类......并且它也被导入到头文件中......其余所有设置也得到了照顾,很好......除了这个没有其他问题......
【问题讨论】:
-
在 Swift 中显示 FacilityDataModel 的保存方法
-
我没有转换数据模型类,所以我只想使用发布的这个 Objective-C 数据模型类...
-
让设施怎么样:设施! = self 然后 facilityDataModel.save(facility) 这对你有用吗?
-
显示“无法转换'Facility!'类型的值!”到预期的参数类型'Facility!'”,这更令人困惑......
-
你在 objc 代码中也有一个类“Facility”声明吗?
标签: swift