适应不断变化的模型Swift iOS?

时间:2018-11-15 08:45:39

标签: ios swift class initialization

class User {
    var uid : String
    var profileImageURL : String

    init(uid : String, profileImageURL : String) {
        self.uid = uid 
        self.profileImageURL = profileImageURL
    }
}

如果我的项目要从上述用户模型开始,并且我有一个大型应用程序,则要在该用户中初始化20多个文件,如果要添加新的必需项属性,例如age,我必须为每个文件修复初始化程序。更糟糕的是,我将不得不进入每个初始化程序之后,并在其自己的行上设置new属性。

如果在生产过程中需要我添加25个新属性,那将是一场噩梦。

处理将来可能会发生变化的大型模型的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

我不会在20多个位置初始化对象。这使代码易碎。在用户管理之外添加一个额外的层,您可以在其中询问当前用户/询问任何用户。并在一个位置进行初始化。

答案 1 :(得分:1)

您做这样的事情

      <?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout 
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/layout"
       android:layout_width="fill_parent"
       android:layout_height="64dp"
       android:padding="10dp"
       android:background="@color/black"
        >
         <ImageView
         android:src="@drawable/ic_nav_about_active"

             android:id="@+id/image"
            android:layout_width="90dp"
    android:layout_height="90dp"
    android:layout_alignParentLeft="true"
    />
       <TextView
    android:textSize="13dp"
    android:textColor="@color/colorred"
    android:text="Testing"
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/image"

    />
   <TextView
    android:textSize="13dp"
    android:textColor="@color/colorred"
    android:text="Testing is awecome"
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/image"
    android:layout_below="@id/title"
     />

    <ImageView
    android:id="@+id/btn_close"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="24dp"
      android:src="@drawable/exo_controls_pause"/>
        </RelativeLayout>

或编写一个Codable类直接对字典进行解码