6164
Swift から Objective-C の構造体のメンバにアクセスする方法は、どうすれば良いでしょうか？

【Objective-C】

```

    struct test {
        char        *test_name;
    };
    
    extern int getifaddrs(struct test **);
    
```

【Swift】

```

    var work : UnsafeMutablePointer<test>;
    
    var ret:int_fast32_t = 0
    ret=getifaddrs(&work)
    
```

ここで、`work` の中の `test_name` メンバにアクセスしたいのですが出てきませんでした。

```

    work.
    
```
CC BY-SA 3.0
2015-02-07T04:44:58.363
6081
2015-02-09T00:46:38.103
2015-02-07T06:49:12.827
4978
8109
question
objective-c swift
Swift から Objective-C の構造体のメンバにアクセスする方法
UnsafePointer、UnsafeMutablePointerは、プロパティ「memory」を使って、ポイントする値を取得できます。

以下、サンプルコード。

Objective-Cファイル：

```

    #import <Foundation/Foundation.h>
    // 構造体の定義
    typedef struct test {
        int number;
    } Test;
    // 構造体のポインタを返す関数。基本Swiftは、ポインタが「ない」ことになってるので、C側でポインタを作る必要があります。
    Test *getPointer(Test *value) {
        return value;
    }
    // ポインタのポインタを引数にとる関数
    int inputTwo(Test **theTest) {
        (*theTest)->number = 2;
        return 2;
    }
    
```

Swiftファイル：ViewController.swift

```

    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // 構造体Test型の変数myTestを宣言して、初期化。それからTest型ポインタmyPointerを作成。
            var myTest = Test(number: 0)
            var myPointer :UnsafeMutablePointer<Test> = getPointer(&myTest)
            // ポインタのポインタを引数にとる関数に渡す。
            let result = inputTwo(&myPointer)
            // プロパティ「memory」で、ポインタが指し示している構造体を取得。
            let resultTest = myPointer.memory
            println(result)
            // Swiftの構造体と同じ扱いで、構造体の要素にアクセスできます。
            println(resultTest.number)
        }
    }
    
```
CC BY-SA 3.0
2015-02-08T23:48:53.220
6164
2015-02-09T00:46:38.103
2015-02-09T00:46:38.103
7362
7362
6081
answer