<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Structify將 Swift 結(jié)構(gòu)轉(zhuǎn)換為 Objc 類的工具

          聯(lián)合創(chuàng)作 · 2023-10-02 05:42

          Structify 旨在讓你更輕松將 Swift 結(jié)構(gòu)轉(zhuǎn)換為 Objective-C 類,開發(fā)者無需手動將結(jié)構(gòu)轉(zhuǎn)換為類,反之亦然。

          不使用 Structify

          struct User {
              let address: String
              let company: String
              let email: String
              let name: String
              let phone: String
              let uid: String
              let username: String
              let website: String
              let birthday: Date
          }
          
          class RLMUser: Object {
          
              @objc dynamic var address: String = ""
              @objc dynamic var company: String = ""
              @objc dynamic var email: String = ""
              @objc dynamic var name: String = ""
              @objc dynamic var phone: String = ""
              @objc dynamic var uid: String = ""
              @objc dynamic var username: String = ""
              @objc dynamic var website: String = ""
              @objc dynamic var birthday: Date = Date()
              
              override class func primaryKey() -> String? {
                  return "uid"
              }
          }
          
          extension RLMUser {
              func toStruct() -> User {
                  return User(address: address,
                              company: company,
                              email: email,
                              name: name,
                              phone: phone,
                              uid: uid,
                              username: username,
                              website: website,
                              birthday: birthday)
              }
          }
          
          extension User {
              func toObject() -> RLMUser {
                  return RLMUser.build { object in
                      object.uid = uid
                      object.address = address
                      object.company = company
                      object.email = email
                      object.name = name
                      object.phone = phone
                      object.username = username
                      object.website = website
                      object.birthday = birthday
                  }
              }
          }
          

          乍一看似乎很方便的方法。但是如果你的結(jié)構(gòu)不是那么小并且有更多的屬性呢?如果你有太多類似User這樣的結(jié)構(gòu)時怎么辦?如果您想在開發(fā)過程中為現(xiàn)有結(jié)構(gòu)添加更多屬性怎么辦?

          使用 Structify

          struct User {
              var address: String = ""
              var company: String = ""
              var email: String = ""
              var name: String = ""
              var phone: String = ""
              var uid: String = ""
              var username: String = ""
              var website: String = ""
              var birthday: Date = Date()
          }
          
          class RLMUser: Object {
              //you only set the primaryKey as usual 
              override class func primaryKey() -> String? {
                  return "uid"
              }
          }
          
          extension RLMUser: StructConvertible {
              typealias StructType = User
          }
          
          extension User: ObjectConvertible {
              typealias ClassType = RLMUser
          }
          你唯一需要做的就是讓你的結(jié)構(gòu)符合ObjectConvertible協(xié)議并創(chuàng)建一個 Objective-C 對類并符合StructConvertible協(xié)議。

          要求

          • iOS 8.0+
          • Xcode 10.+
          • Swift 4.2+

          安裝

          Structify 可通過 CocoaPods 獲得。要安裝它,只需將以下行添加到您的 Podfile 中:

          pod 'Structify'
          

           

          瀏覽 13
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本黄色性情视频 | 韩国三级小视频 | 成人免看一级a一片A片 | 一区二区三区高清 | 强伦轩人妻一区二区三区70后 |