set method

void set(
  1. String name,
  2. Object value
)

フィールドデータをセットする name フィールド名 value セットするデータ

Implementation

void set(String name, Object value) {
  if (name == 'createDate' || name == 'updateDate') {
    value = DateTime.parse(value as String);
    _fields[name] = value;
    return;
  }
  if (['NCMBUser', 'NCMBObject', 'NCMBFile', 'NCMBPush', 'NCMBInstallation']
          .indexOf(value.runtimeType.toString()) >
      -1) {
    _fields[name] = value;
    return;
  }
  if (name == 'objectId') {
    objectId = value as String;
    _fields[name] = value;
    return;
  }
  if (name == 'acl') {
    if (!(value is NCMBAcl)) {
      var acl = new NCMBAcl();
      acl.sets(value as Map);
      value = acl;
    }
    _fields[name] = value;
    return;
  }
  try {
    var map = value as Map;
    if (map.containsKey('className')) {
      var className = map['className'] as String;
      map.remove('__type');
      map.remove('className');
      print(className);
      switch (className) {
        case 'user':
          var user = NCMBUser();
          user.sets(map);
          value = user;
          break;
        case 'installation':
          var installation = NCMBInstallation();
          installation.sets(map);
          value = installation;
          break;
        case 'push':
          var push = NCMBPush();
          push.sets(map);
          value = push;
          break;
        default:
          NCMBObject obj = NCMBObject(className);
          obj.sets(map);
          value = obj;
      }
      _fields[name] = value;
      return;
    }
    if (map.containsKey('__type') && map['__type'] == 'GeoPoint') {
      var geo = NCMBGeoPoint(
          map['latitude'].toDouble(), map['longitude'].toDouble());
      _fields[name] = geo;
      return;
    } else if (map.containsKey('__type') && map['__type'] == 'Date') {
      var format = DateFormat("yyyy-MM-ddTHH:mm:ss.S'Z'");
      _fields[name] = format.parseStrict(map['iso']);
      return;
    }
  } catch (e) {
    _fields[name] = value;
  }
}