グループの作成

ログイン済みのユーザーはグループを作成できます。グループを作成したユーザーが、このグループのオーナーとなります。

グループを作成する際は、以下の組み合わせを選択できます。

  • グループ ID を Kii Cloud が自動発行するか、クライアントから指定するか
  • グループ作成時にメンバーを同時に指定するか、しないか

ここでは、以下の 3 通りの方法でグループを作成するサンプルコードを示します。サンプルコードのパラメーターにより、上記の組み合わせを実現できます。

ID の自動発行によるグループの作成

新規グループを作成するサンプルコードを以下に挙げます。

Swift:

  • // Create a group.
    let group = KiiGroup(name: "myGroup")
    
    do{
      // Save the group on the server.
      try group.saveSynchronous()
    } catch let error as NSError {
      // Handle the error.
      return
    }
    
    // Get the reference URI and ID of the group.
    let groupUri = group.objectURI
    let groupID = group.groupID
  • // Create a group.
    let group = KiiGroup(name: "myGroup")
    
    // Save the group on the server.
    group.save { (group : KiiGroup?, error : Error?) -> Void in
      if error != nil {
        // Handle the error.
        return
      }
    
      // Get the reference URI and ID of the group.
      let groupUri = group!.objectURI
      let groupID = group!.groupID
    }

Objective-C:

  • NSError *error;
    NSString *groupName = @"myGroup";
    
    // Create a group.
    KiiGroup *group = [KiiGroup groupWithName:groupName];
    
    // Save the group on the server.
    [group saveSynchronous:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
    
    // Get the reference URI and ID of the group.
    NSString *groupUri = [group objectURI];
    NSString *groupID = [group groupID];
  • NSError *error;
    NSString *groupName = @"myGroup";
    
    // Create a group.
    KiiGroup *group = [KiiGroup groupWithName:groupName];
    
    // Save the group on the server.
    [group saveWithBlock:^(KiiGroup *group, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    
      // Get the reference URI and ID of the group.
      NSString *groupUri = [group objectURI];
      NSString *groupID = [group groupID];
    }];

基本手順は以下のとおりです。

  1. KiiGroup(name:) メソッドを使用して KiiGroup インスタンスを生成します。
  2. save()_: メソッドをコールして KiiGroup の作成リクエストを送信します。

グループの作成時にはグループ名を指定します。グループ名は 190 文字までで、使用できる文字などの制限は特にありません。既存のグループ名との重複も可能です。グループ名はデバッグや表示が目的であるため、グループ名を使って作成済みのグループを取得(再インスタンス化)することはできません。

グループ作成後、objectURI() メソッドまたは groupID() メソッドのいずれかによって、グループの URI または ID を取得、保存しておきます。これらの情報は、後ほどこのグループを 既存グループとして参照する 際に利用します。

メンバー指定でのグループの作成

グループ作成と同時に、グループメンバーを追加することもできます。

以下にサンプルコードを挙げます。

Swift:

  • // Create a group and set a group member.
    let group = KiiGroup(name: "myGroup", andMembers: [KiiUser(id: "User ID of a member")])
    
    do{
      // Save the group on the server.
      try group.saveSynchronous()
    } catch let error as NSError {
      // Handle the error.
      return
    }
    
    // Get the reference URI and ID of the group.
    let groupUri = group.objectURI
    let groupID = group.groupID
  • // Create a group and set a group member.
    let group = KiiGroup(name: "myGroup", andMembers: [KiiUser(id: "User ID of a member")])
    
    // Save the group on the server.
    group.save { (group : KiiGroup?, error : Error?) -> Void in
      if error != nil {
        // Handle the error.
        return
      }
    
      // Get the reference URI and ID of the group.
      let groupUri = group!.objectURI
      let groupID = group!.groupID
    }

Objective-C:

  • NSError *error;
    NSString *groupName = @"myGroup";
    
    // Set a group member.
    NSArray *members = @[KiiUser.userWithID("User ID of a member")];
    
    // Create a group.
    KiiGroup *group = [KiiGroup groupWithName:groupName
                                   andMembers:members];
    
    // Save the group on the server.
    [group saveSynchronous:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
    
    // Get the reference URI and ID of the group.
    NSString *groupUri = [group objectURI];
    NSString *groupID = [group groupID];
  • NSError *error;
    NSString *groupName = @"myGroup";
    
    // Set a group member.
    NSArray *members = @[KiiUser.userWithID("User ID of a member")];
    
    // Create a group.
    KiiGroup *group = [KiiGroup groupWithName:groupName
                                   andMembers:members];
    
    // Save the group on the server.
    [group saveWithBlock:^(KiiGroup *group, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    
      // Get the reference URI and ID of the group.
      NSString *groupUri = [group objectURI];
      NSString *groupID = [group groupID];
    }];

いずれの場合も 第 2 引数にグループメンバーを指定してください。

なお、グループメンバーは 後ほど追加 することもできます。

ID 指定でのグループの作成

先ほどまでの例ではグループ ID が自動的に付与されますが、グループ作成時にグループ ID を明示的に指定することもできます。

グループ ID を指定してグループを作成する例を以下に挙げます。

Swift:

  • // This example assumes that users have a custom attribute "userSequence".
    
    do{
      // Create a group ID with the attribute.
      let groupID : String = "my-group-" + KiiUser.current()!.userID!
    
      // Create and save a group on the server.
      let group = try KiiGroup.registerSynchronous(withID: groupID, name: "myGroup", members: [KiiUser(id: "User ID of a member")])
    
      // Get the reference URI of the group.
      let groupUri = group.objectURI
    }catch (let error as NSError){
      // Handle the error.
      return
    }
  • // This example assumes that users have a custom attribute "userSequence".
    // Create a group ID with the attribute.
    let groupID : String = "my-group-" + KiiUser.current()!.userID!
    
    // Create and save a group on the server.
    KiiGroup.register(withID: groupID, name: "myGroup", members: [KiiUser(id: "User ID of a member")]) { (group : KiiGroup?, error : Error?) -> Void in
      if error != nil {
        // Handle the error.
        return
      }
    
      // Get the reference URI of the group.
      let groupUri = group!.objectURI
    }

Objective-C:

  • // This example assumes that users have a custom attribute "userSequence".
    // Create a group ID with the attribute.
    NSString *userShortID = [[KiiUser currentUser] getObjectForKey:@"userSequence"];
    NSString *groupID = [@"my-group-" stringByAppendingString:userShortID];
    NSString *groupName = @"myGroup";
    NSArray *members = @[KiiUser.userWithID("User ID of a member")];
    NSError *error = nil;
    
    // Create and save a group on the server.
    KiiGroup *group = [KiiGroup registerGroupSynchronousWithID:groupID
                                                          name:groupName
                                                       members:nil
                                                         error:&error];
    if (error != nil) {
      // Handle the error.
    }
    
    // Get the reference URI of the group.
    NSString *groupUri = [group objectURI];
  • // This example assumes that users have a custom attribute "userSequence".
    // Create a group ID with the attribute.
    NSString *userShortID = [[KiiUser currentUser] getObjectForKey:@"userSequence"];
    NSString *groupID = [@"my-group-" stringByAppendingString:userShortID];
    NSString *groupName = @"myGroup";
    NSArray *members = @[KiiUser.userWithID("User ID of a member")];
    
    // Create and save a group on the server.
    KiiGroup *group =
      [KiiGroup registerGroupWithID:groupID
                               name:groupName
                            members:nil
                              block:^(KiiGroup* group, NSError* error) {
          if (error != nil) {
            // Handle the error.
            return;
          }
    
          // Get the reference URI of the group.
          NSString groupUri = group.objectURI;
    }];

register(withID:name:members:_:) メソッドを利用して、グループの作成時にグループ ID を指定します。グループ ID は、小文字の英数字、"."、"-"、"_" から構成される 30 文字までの文字列として指定します。既存のグループ ID と重複した場合はエラーになります。

例では "my-group-" というプリフィックスの後にユーザーを一意に表す値を連結し、グループ ID としています。こうすることでユーザーがわかれば、そのユーザーがオーナーになっているグループ ID が特定できるので、Twitter のフォロワーをグループで管理するようなケースで役に立ちます。なお、この例では、カスタム属性としてシーケンス番号のような短い一意の値が設定済みであることを想定しています。ユーザー ID を使用すると 30 文字を超えるためご注意ください。

なお、グループメンバーを同時追加することもできます。register(withID:name:members:_:) メソッドの第 3 引数にグループメンバーを指定してください。