グループの削除

グループを削除するには delete(_:) メソッドを使います。

Swift:

  • // groupUri contains the reference URI of the target group.
    
    // Instantiate the group.
    let group = KiiGroup(uri: groupUri)
    
    do {
      // Delete the group.
      try group.deleteSynchronous()
    } catch let error as NSError {
      // Handle the error.
      return
    }
  • // groupUri contains the reference URI of the target group.
    
    // Instantiate the group.
    let group = KiiGroup(uri: groupUri)
    
    // Delete the group.
    group.delete { (group : KiiGroup?, error : Error?) -> Void in
      if error != nil {
        // Handle the error.
        return
      }
    }

Objective-C:

  • // groupUri contains the reference URI of the target group.
    
    NSError *error = nil;
    
    // Instantiate the group.
    KiiGroup *group = [KiiGroup groupWithURI:groupUri];
    
    // Delete the group.
    [group deleteSynchronous:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
  • // groupUri contains the reference URI of the target group.
    
    // Instantiate the group.
    KiiGroup *group = [KiiGroup groupWithURI:groupUri];
    
    // Delete the group.
    [group deleteWithBlock:^(KiiGroup *group, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    }];

グループを削除すると、このグループが保持していた全てのデータ(Bucket、KiiObject、トピック)は自動的に削除されます。

groupUri の生成方法は グループの作成 をご覧ください。

ユーザー削除時のグループ

ユーザーを削除したとき、それに関連付けられたグループは自動的に削除されません。そのグループを参照するメンバーがいなくなってもグループは自動的に消えないため、参照されないグループやそのデータがアプリケーション内の領域を消費し続ける現象が起こりえます。

こうした現象を防止するため、ユーザーの削除では、次の点に注意する必要があります。

  • 削除対象のユーザーがオーナーのとき

    削除されるユーザーがグループのオーナーの場合、そのグループはオーナーが不在のまま残り続けます。グループのオーナーの変更や、メンバーの追加と削除ができるのはオーナーだけであるため、事実上、そのグループを管理できるユーザーがいなくなります。

    オーナーのユーザーを削除する前には、モバイルアプリの外部仕様に基づいて、オーナーを変更する、グループのオーナーであるユーザーは削除できないようにする(先にグループのオーナーでなくすよう案内する)、ユーザー削除時にグループごと削除するなどの対処を行う必要があります。

  • 削除対象のユーザーが最後のメンバーのとき

    削除されるユーザーがグループの最後のメンバーの場合、そのグループを利用するユーザーがいなくなります。URI によってグループが特定できるようになっている場合はグループを参照できますが、モバイルアプリの側で URI も保存していない場合はリークしているのと同じ状態になります(グループの参照方法は グループの参照ユーザーとグループの関連 をご覧ください)。

    URI による参照を行わない設計のときは、ユーザーの削除の際にグループの削除も考慮する必要があります。

    ユーザーを削除するとき、以下の方法でグループの削除も同時に行う処理を検討してください。

    1. 削除しようとしているユーザーについて、そのユーザーがメンバーであるグループの一覧を取得する
    2. 取得したグループのそれぞれについて、そのグループのメンバーを取得する
    3. 削除しようとしているユーザーがグループの最後の 1 人のメンバーなら、ユーザーの削除と同時にそのグループも削除する