カスタムフィールド
開発者は、既定フィールドに加え、任意のフィールド(年齢、性別、誕生日等)を追加できます。ただし、SDK により予約されているフィールド名は使用できません。予約されているフィールド名については appledoc を参照してください。
カスタムフィールドは UserFields
インスタンスに設定してください。
カスタムフィールドの設定と変更
ユーザーのカスタムフィールドを設定・変更する例を以下に挙げます。
Swift:
-
// Set custom fields. let userFields = KiiUserFields() userFields.setObject(NSNumber(value: 20 as Int32), forKey: "age") userFields.setObject("male", forKey: "gender") userFields.setObject(NSNumber(value: 170.5 as Float), forKey: "height") userFields.setObject(NSNumber(value: true as Bool), forKey: "isMember") // Remove custom fields. userFields.removeFromServer(forKey: "weight") userFields.removeFromServer(forKey: "chest") // Get the currently logged-in user. let user = KiiUser.current()! do { // Update the user attributes. try user.update(withUserFieldsSynchronous: userFields) } catch let error as NSError { // Handle the error. return }
-
// Set custom fields. let userFields = KiiUserFields() userFields.setObject(NSNumber(value: 20 as Int32), forKey: "age") userFields.setObject("male", forKey: "gender") userFields.setObject(NSNumber(value: 170.5 as Float), forKey: "height") userFields.setObject(NSNumber(value: true as Bool), forKey: "isMember") // Remove custom fields. userFields.removeFromServer(forKey: "weight") userFields.removeFromServer(forKey: "chest") // Get the currently logged-in user. let user = KiiUser.current()! // Update the user attributes. user.update(with: userFields) { (retUser :KiiUser?, error : Error?) -> Void in if error != nil { // Handle the error. return } }
Objective-C:
-
// Set custom fields. KiiUserFields *userFields = [[KiiUserFields alloc] init]; [userFields setObject:[NSNumber numberWithInt:20] forKey:@"age"]; [userFields setObject:@"male" forKey:@"gender"]; [userFields setObject:[NSNumber numberWithFloat:170.5f] forKey:@"height"]; [userFields setObject:[NSNumber numberWithBool:YES] forKey:@"isMember"]; // Remove custom fields. [userFields removeFromServerForKey:@"weight"]; [userFields removeFromServerForKey:@"chest"]; NSError *error = nil; // Get the currently logged-in user. KiiUser *user = [KiiUser currentUser]; // Update the user attributes. [user updateWithUserFieldsSynchronous:userFields error:&error]; if (error != nil) { // Handle the error. return; }
-
// Set custom fields. KiiUserFields *userFields = [[KiiUserFields alloc] init]; [userFields setObject:[NSNumber numberWithInt:20] forKey:@"age"]; [userFields setObject:@"male" forKey:@"gender"]; [userFields setObject:[NSNumber numberWithFloat:170.5f] forKey:@"height"]; [userFields setObject:[NSNumber numberWithBool:YES] forKey:@"isMember"]; // Remove custom fields. [userFields removeFromServerForKey:@"weight"]; [userFields removeFromServerForKey:@"chest"]; // Get the currently logged-in user. KiiUser *user = [KiiUser currentUser]; // Update the user attributes. [user updateWithUserFields:userFields block:^(KiiUser *user, NSError *error) { if (error != nil) { // Handle the error. return; } }];
既存のフィールドを更新対象として指定しない場合、そのフィールドはそのまま Kii Cloud 上に保持されます。
updateWithUserFields:block:
メソッドが正常に完了すると、フィールドが Kii Cloud および KiiUser
インスタンスで更新されます。
また既定フィールドとカスタムフィールドの設定・変更は同時に行えます。
ユーザー属性の変更は、基本的にログイン中のユーザー本人に対してのみ実行できます。詳しくは ユーザー属性 をご覧ください。
注意:[KiiUser saveSynchronous:]
と [KiiUser save:withCallback:]
は deprecated になりました。
今後は [KiiUser updateWithIdentityDataSynchronous:userFields:error:]
,
[KiiUser updateWithUserFieldsSynchronous:error]
,
または [KiiUser updateWithIdentityData:userFields:block:]
,
[KiiUser updateWithUserFields:block:]
,
を利用してください。
カスタムフィールドの参照
ユーザーのカスタムフィールドを取得する例を以下に挙げます。
Swift:
-
// Get the currently logged-in user. let user = KiiUser.current()! do { // Refresh the user to get the latest user info from Kii Cloud. try user.refreshSynchronous() } catch let error as NSError { // Handle the error. return } // Get custom fields. let age = (user.getObjectForKey("age") as! NSNumber).intValue let gender = user.getObjectForKey("gender") as! String let height = (user.getObjectForKey("height") as! NSNumber).floatValue let isMember = (user.getObjectForKey("isMember") as! NSNumber).boolValue
-
// Get the currently logged-in user. let user = KiiUser.current()! // Refresh the user to get the latest user info from Kii Cloud. user.refresh { (user :KiiUser?, error : Error?) -> Void in if error != nil { // Handle the error. return } // Get custom fields. let age = (user!.getObjectForKey("age") as! NSNumber).intValue let gender = user!.getObjectForKey("gender") as! String let height = (user!.getObjectForKey("height") as! NSNumber).floatValue let isMember = (user!.getObjectForKey("isMember") as! NSNumber).boolValue }
Objective-C:
-
// Get the currently logged-in user. KiiUser *user = [KiiUser currentUser]; NSError *error = nil; // Refresh the user to get the latest user info from Kii Cloud. [user refreshSynchronous:&error]; if (error != nil) { // Handle the error. return; } // Get custom fields. int age = [[user getObjectForKey:@"age"] integerValue]; NSString *gender = [user getObjectForKey:@"gender"]; double height = [[user getObjectForKey:@"height"] doubleValue]; BOOL isMember = [[user getObjectForKey:@"isMember"] boolValue];
-
// Get the currently logged-in user. KiiUser *user = [KiiUser currentUser]; // Refresh the user to get the latest user info from Kii Cloud. [user refreshWithBlock:^(KiiUser *user, NSError *error) { if (error != nil) { // Handle the error. return; } // Get custom fields. int age = [[user getObjectForKey:@"age"] integerValue]; NSString *gender = [user getObjectForKey:@"gender"]; double height = [[user getObjectForKey:@"height"] doubleValue]; BOOL isMember = [[user getObjectForKey:@"isMember"] boolValue]; }];
例のように getObjectForKey
メソッドを利用して値を取得します。
ユーザー作成時のカスタムフィールドの設定
ユーザーの作成を行うタイミングで、カスタムフィールドの初期値を設定する例を以下に挙げます。
KiiUser のインスタンスを生成した後に setObject:forKey:
メソッドを使って、カスタムフィールドを設定することができます。
Swift:
-
// Create a user. let username = "user_123456" let password = "123ABC" let user = KiiUser(username: username, andPassword: password) // Set custom fields. user.setObject(NSNumber(value: 30 as Int32), forKey: "age") user.setObject(NSNumber(value: 0 as Int32), forKey: "score") do { // Register the user. try user.performRegistrationSynchronous() } catch let error as NSError { // Handle the error. return }
-
// Create a user. let username = "user_123456" let password = "123ABC" let user = KiiUser(username: username, andPassword: password) // Set custom fields. user.setObject(NSNumber(value: 30 as Int32), forKey: "age") user.setObject(NSNumber(value: 0 as Int32), forKey: "score") // Register the user. user.performRegistration { (retUser :KiiUser?, error : Error?) -> Void in if error != nil { // Handle the error. return } }
Objective-C:
-
// Create a user. NSString *username = @"user_123456"; NSString *password = @"123ABC"; NSError *error = nil; KiiUser *user = [KiiUser userWithUsername:username andPassword:password]; // Set custom fields. [user setObject:[NSNumber numberWithInt:30] forKey:@"age"]; [user setObject:[NSNumber numberWithInt:0] forKey:@"score"]; // Register the user. [user performRegistrationSynchronous:&error]; if (error != nil) { // Handle the error. return; }
-
// Create a user. NSString *username = @"user_123456"; NSString *password = @"123ABC"; KiiUser *user = [KiiUser userWithUsername:username andPassword:password]; // Set custom fields. [user setObject:[NSNumber numberWithInt:30] forKey:@"age"]; [user setObject:[NSNumber numberWithInt:0] forKey:@"score"]; // Register the user. [user performRegistrationWithBlock:^(KiiUser *user, NSError *error) { if (error != nil) { // Handle the error. return; } }];