ISParseBind 1.0.3

ISParseBind 1.0.3

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布日期最后发布日期2017年3月
Swift版Swift版本3.0
SPM支持SPM

Daniel Amaral维护。



 
依赖
Parse>= 0
Kingfisher>= 0
 

ISParseBind

使用ISParseBind,您可以使用Xcode Interface Builder资源的力量来保存、更新和查询PFObjects。

ISParseBind Video

https://www.youtube.com/watch?v=WCZRNC_mHNQ

支持的组件

  • UITextField
  • TextView
  • UIImageView
  • UISlider
  • UISwitch
  • UILabel(只读)
  • UIButton(即将支持单选按钮)

自定义组件

  • 您可以通过实现ISParseBindable协议来创建自己的组件。
  • 所有自定义组件都需要继承支持组件之一并实现ISParseBindable

要求

  • iOS 9+
  • Swift 3

如何工作?Interface Builder步骤

  • 在您的xib/storyboard中添加一个UIView,并将其设置为ISParseBindView子类。
  • 在那ISParseBindView中添加一些实现了ISParseBindable的组件。
  • 在属性检查器中,填写:字段类型、字段路径和持久化 - 其他不是必需的。
  • 组件设置完成后,您需要右键单击ISParseBindView并与ISParseBindable组件绑定。
  • 创建一个@IBOutLet来绑定您的ISParseBindView。

如何在实际中工作?代码步骤

在AppDelegate中设置Parse Server凭据,在“didFinishLaunchingWithOptions”方法中

    let parseConfiguration = ParseClientConfiguration(block: { (ParseMutableClientConfiguration) -> Void in
        ParseMutableClientConfiguration.applicationId = "applicationID"
        ParseMutableClientConfiguration.clientKey = "clientKey"
        ParseMutableClientConfiguration.server = "serverURL"
    })

    Parse.initialize(with: parseConfiguration)

在某个UIViewController中,执行以下操作

1:

import ISParseBind

2:

@IBOutlet var parseBindView:ISParseBindView!

3: 实现ISParseBindViewDelegate。

这不是强制性的,但如果您需要在处理前后截取某些方法,请实现

parseBindView.delegate = self

extension yourViewController : ISParseBindViewDelegate {
  func willSave(view: ISParseBindView, object: PFObject) -> PFObject? {
        //If you need, you can intercept the current PFObject that will be saved and change some attributes before that. For example:
        //if object.parseClassName == "Car" {
        //    object["color"] = "Yellow"
        //}
        return object
    }

  func didSave(view: ISParseBindView, object: PFObject, isMainEntity:Bool, error: Error?) {

  }

  func didFetch(view: ISParseBindView, error: Error?) {
      print("finish fetch")
  }  

  func willFill(component: Any, value: Any) -> Any? {
      //Check wich component will be filled and return a custom value
      if let component = component as? UITextField, component == txtName {
          return "\(value as! String) Smith"

      //Return nil if you want to ignore the fill
      }else if let component = component as? UIImageView, component == imgPicture {
          return nil
      }

      return value
   }

  func didFill(component: Any, value: Any) { }

  func willSet(component: Any, value: Any) -> Any? {
      //Check wich component will be setup and return a custom value
      if let component = component as? UIImageView, component == imgPicture {
          return getImageInGrayScale(imgPicture.image)
      }        
      return value
  }

  func didSet(component: Any, value: Any) { }  
}

4:

self.parseBindView.save()

5: 可选获取/查询数据。在viewDidLoad()中执行

self.parseBindView.parseObject = PFObject(withoutDataWithClassName: "SomeClass", objectId: "YYYYXXX")

ISParseBindable变量

了解如何使用ISParseBindable协议的变量。

变量 类型 描述
必需的 Bool(可选) 填充组件是必须的
必需的 String(可选) 组件未填时的错误消息
字段类型 字符串: 'Text', 'Number', 'Logic' 或 'Image' 这对于算法在 Parse 中正确地将相应字段类型转换为必须是必要的。
字段类型错误 String(可选) 转换错误信息
字段路径 字符串 字段路径为您类结构,例如: 'vehicle.brand.car.model’,Vehicule 将是您的主体实体,'Brand' 和 'Car' 将是会自动创建的关系类,而 'model' 将是 'Car' 类的字段。
持久化 布尔值 如果 persist = false,则此字段将仅使用“只读”模式。

开发者可以使用可选的 ISParseBindable 变量来创建自己的字段验证器。

FieldTypeError, Required 和 Required Error 在 ISParseBind 算法中不使用。您可以用作辅助程序来制作自己的验证规则。

类结构

  • 字段路径输入示例:“vehicle.brand.car.model”,将生成此类结构

    {
        vehicle = {
            brand = {
               car = {
                       model: 
                   }
            }
        }
    }
    • “model” 值取决于其组件类型。例如,如果组件是 UITextField 或 UITextView,则值将是字符串。然而,如果是 UIImageView,值将是会在算法中转换为 PFFile 的 UIImage。
    • 在上面的字典结构中,算法将在 Parse Server 中生成 3 个类:Vehicule、Brand 和 Car。
    • 字段路径“.”后面的最后一个字符串将是 Parse Server 中的字段。'model',在给定的示例中,将是一个字段,而不是一个类。