LoginSignup
2
3

More than 5 years have passed since last update.

SwiftとObjective-Cの定数を共有

Last updated at Posted at 2019-01-27

Objective-Cで書かれたプロジェクトのswift化を進めています。進め方としては、既存のObjective-Cのコードはそのままに、新規に作る画面や機能をswiftで書くというやり方。

Objective-C側で書かれたdefineの定数。よくNSUserDefaultsなどのKeyとしてまとめてたりしますよね。

あれをSwiftからも使えるようにすべく、ラッパーをかいてみました。

まず、Objective-CのコードをSwiftで呼べるようBridging-Header.h に一行追加します。

Bridging-Header.h
#import "Defines.h"

そして、Objective-C用の定義ファイルであるDefines.hにクラスを追加します。今までは#defineだけの塊のファイルです。

Defines.h

#define kUSERDEFAULTS_HOGEHOGE @"UserDefaults_HOGEHOGE"

@interface Defines : NSObject

+ (NSString *)hogehogeUserDefaults;

@end
Defines.m

#import <Foundation/Foundation.h>
#import "Defines.h"

@implementation Defines

+ (NSString *) hogehogeUserDefaults { return kUSERDEFAULTS_HOGEHOGE; }

@end

そして呼び出し側からは、

Hogehoge.swift
UserDefaults.standard.set(password, forKey:Defines.hogehogeUserDefaults())

というところまで書いて、できたできたと、なる予定だったのですが、

Hogehoge.swift
UserDefaults.standard.set(password, forKey: kUSERDEFAULTS_HOGEHOGE)

でもOKでした。あれれ?ラッパーいらなかった?
っていうお話でした。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3