2017-12-29 27 views
0

私のクラスには、次のようになります:関数が、定義された文字列ではなく、パラメータとして自分自身を含むクラスを必要とするのはなぜですか?

class MyNewClass { 
    func myNewFunction (paramString : String) -> String { 
     var myString = "" 

     if paramString.caseInsensitiveCompare("A") == ComparisonResult.orderedSame { 
      myString = "The string is A" 
     }else{ 
      myString = "The string is blank" 
     } 
     return myString 
    } 
} 

これは私が別のViewContollerでこのクラスを使用する場合、それは私に奇妙なエラーを与える何problem.Butを持っていません。

は、私は私がMyNewClassに定義paramStringようmyNewFunction()に "A" を挿入する必要があり、別のViewController

let myString : String = MyNewClass.myNewFunction("A") 

と仮定して、このようなmyNewFunctionを呼び出すが、私はこの

のような警告が表示されます

'文字列'は 'MyNewClass'に変換できません

IただmyNewFunction()は、そのパラメータとしてMyNewClassであることが含まれているクラスを必要とする理由私はmyNewFunction() .ANDのパラメータとしてStringを解析カントなぜ知りませんか?

誰かあなたはMyNewClassのインスタンスを開始せずに、それを呼び出したい場合は、あなたが

class MyNewClass { 
    static func myNewFunction (paramString : String) -> String { 
     var myString = "" 

     if paramString.caseInsensitiveCompare("A") == ComparisonResult.orderedSame { 
      myString = "The string is A" 
     } else { 
      myString = "The string is blank" 
     } 

     return myString 
    } 
} 

MyNewClass.myNewFunction(paramString: "foo")

のように、funcstaticを付加することができますしてください

答えて

1

正しい方向に私を導いてくださいOptinally、MyNewClassのインスタンスを作成することができます。私はstatic` `使用する場合

let myInstance = MyNewClass() 
let myString = myInstance.myNewFunction(paramString: "foo") 
+1

おかげでとてもhelped..I新しいswift..thanksウル助け – ken

+0

をbro..it私の' 'MyNewClass' static'手段は何ですか? – ken

+1

'static'キーワードは、いくつかの言語で' class func/var'と同じです。つまり、関数がインスタンスのメンバーではないことを意味します。たとえば、 'self'は静的関数で使用できません。なぜなら' self'はそこに存在しないからです。静的関数/プロパティを、クラス名で名前空間を付けたグローバル関数と考えてください。私はCS卒業生ではないので、本当に正しく説明できません。申し訳ありません! –

関連する問題