0

必要な関数を追加するには、NSFileManager をサブクラス化する必要があります。サブクラスを作成し、関数とプライベート変数を追加しました。今度は、このような別のクラスから関数にアクセスしたいと思います。MyFileManager.defaultManager().awesomeFunction("Test")

これが私のコードです:

import UIKit

class AwesomeFileManager: NSFileManager {

    private let awesomeLet = ["let1", "let2", "let3"]

    func awesomeFunction(parameter: String) -> Bool! {
        return true
    }

}

どういうわけか、別のクラスから関数にアクセスできません。私は何を間違っていますか?

Swift 2.0 を使用しています

4

2 に答える 2

0

新しいメソッドにアクセスする必要があるメソッドのサブクラス化を避けるために、そのタスクは拡張機能でより適切に処理されます。

extension NSFileManager {

    private struct AssociatedKey {
        static var awesomeLet: [String]?
    }

    var awesomeLet: [String]? {
        get {
            return objc_getAssociatedObject(self, &AssociatedKey.awesomeLet) as? [String]
        }

        set {
            if let value = newValue {
                objc_setAssociatedObject(self, &AssociatedKey.awesomeLet, value, .OBJC_ASSOCIATION_COPY_NONATOMIC)
            }
        }
    }

    func awesomeFunction(parameter: String) -> Bool! {
        return true
    }

}

拡張機能に変数を追加することはできないため、拡張機能を追加するオブジェクトを格納/取得するための関連キーを追加するコードを提供しました。

于 2015-06-12T22:07:50.867 に答える