Невозможно преобразовать значение типа 'NSObject' в ожидаемый тип аргумента 'NSObject!' - PullRequest
0 голосов
/ 27 июня 2018

Я конвертирую весь свой проект из 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;
}

Теперь преобразованный файл «Facility.swift» в 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, как сейчас ... поэтому я должен использовать этот существующий класс DataModel Objective-C в swift ... и он также импортируется в заголовочный файл ... остальные настройки о них тоже заботятся и ничего страшного ... никаких других проблем, кроме этой ...

1 Ответ

0 голосов
/ 27 июня 2018

Похоже, у вас есть класс с тем же именем в коде objc.

Вам потребуется переименовать один из них, так как компилятор не может разрешить два класса с одинаковыми именами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...