2016-11-22 18 views
0

質問:デフォルトのプロパティ値を使用してオブジェクトを初期化する方法を教えてください。クラス内のinitをオーバーライドしてオブジェクトを作成できますか?デフォルトのプロパティ値を使用してオブジェクトを初期化する

オブジェクトのプロパティデータを入力するためにビューコントローラを使用しないでください。私は外部の情報源からデータを取り込んでいません。アプリケーションには大量のテキストが含まれているため、クラスファイルなどの別のファイルにデータを保存したいだけです。

私が覚えているオブジェクトは、object1(prop1: "string"、prop2:[string]、prop3:[string]など)のプロパティを持つ典型的なクラスオブジェクトのようなものです。 。)同じクラスに作成され、オブジェクトの配列に挿入されます。

答えて

0

テキストを保存するために、名前空間のような種類のエスケープを使用します。次に、デフォルトのイニシャライザで参照するだけです。

enum StaticText { 
    static let A = "A" 
    static let B = "B" 
    static let C = "C" 
} 


class SomeClass { 
    let A = StaticText.A 
    let B = StaticText.B 
    let C = StaticText.C 
} 
+0

静的な値が必要な場合は、静的に構造体またはクラスの代わりにenumを使用する理由は何ですか? – Ryan

+0

これは現在のスウィフトの大会です。 Swiftは名前空間にもっとも近いものです。列挙型を誤ってインスタンス化することはできません。 – Alexander

+1

http://stackoverflow.com/a/38585994/3141234 https://github.com/raywenderlich/swift-style-guide#constants – Alexander

0

コンビニエンス初期化子を使用して拡張してください:

public class ToolBoardView: UIVisualEffectView { 

    public var closeButton = ToolBoardCloseButton() 
    public var imageSegments = UISegmentedControl (items: ["Subject","Frame"]) 
    internal var sliderBackgrounds:[UILabel] = [] 

    convenience internal init(
     _ tag   :Int, 
     _ p: inout [NSLayoutConstraint], 
     _ l: inout [NSLayoutConstraint], 
     _ target  :Any, 
     _ hideAction :Selector 
     ) 
    { 
     self.init(frame: CGRect.zero) 
     self.effect = UIBlurEffect(style: .light) 
     self.tag = tag 
     switch tag { 
     case 0: 
      break 
     case 1: 
      addFilterControls(&p, &l) 
     default: 
      break 
     } 
     closeButton = ToolBoardCloseButton(tag: tag, target: target, action: hideAction) 
     self.addSubview(closeButton) 
     turnOffAutoResizing() 
     makeControlsHidden(true) 
    } 
} 

私が持っている1のほんの一部だが、それはあなたが軌道に乗る必要があります。

Hereは、私が最近投稿した内容の非常に良い説明です。

関連する問題