将对象从静态变量Objective C初始化为Swift

时间:2017-06-02 21:07:25

标签: objective-c swift initialization

你好我现在正在将用Objective C编写的项目翻译成swift,我正在遇到一个谜题。在目标C中,Object(SearchItem)是对象Item的子类,并且具有相同类的静态变量(SearchItem)。静态变量在静态函数中初始化。问题是在目标C上有一个非静态函数初始化超类变量,我试图复制这个,但我不是100%如何处理这个,我想保持相同的格式,如果可能的话,任何帮助都会太棒了!

对象C:

.h文件包括:

 @interface SearchItem : Item

.m文件包括:

static SearchItem *sharedSearchItem = nil;

+(id)sharedSearchItem {
    @synchronized(self) {
        if(sharedSearchItem == nil){
            sharedSearchItem = [SearchItem new];
            //other methods
        }
    }
    return sharedSearchItem;
}
-(void)configureWithSettingsConfig:(SettingsConfig *)settings{
    NSLog(@"%@", [super initWithSettings:settings]);
    //Other methods 
}

夫特:

static var sharedSearchItem: SearchItem? = nil

static func sharedSearchItemInit(){
        if(sharedSearchItem == nil){
            sharedSearchItem = SearchItem()
            //Other methods
        }
    }

    func configureWithSettingsConfig(settings: SettingsConfig){
        print(SearchItem.init(settings: settings)) // creates separate object need it to be on same instantiation
        /*
        The following calls won’t work
        self = ServiceFacade.init(settings: settings)
        self.init(settings: settings)
        super.init(settings: settings)*/
        //Other methods

    }

1 个答案:

答案 0 :(得分:2)

在Swift中,我们创建单身人士的方式就是这样:

static let sharedSearchItem = SearchItem()

就是这样。无需特殊的“sharedInit”功能。