Kii Cloud 上に登録された KiiObject を取得する方法には、ID や URI によって特定の KiiObject 1 つを指定する方法と、KiiObject の検索 によって Bucket 内で条件に一致した KiiObject をまとめて取得する方法があります。ここでは IR や URI を使って取得する方法を示します。
いずれの場合も、取得した KiiObject を参照することで、その KiiObject 内に保存されたキーと値のペア等のデータを取得できます。取得した KiiObject からキーと値のペアを取得する方法は、キーと値のペアの取得 を参照してください。
ID や URI によって KiiObject を取得するには、KiiObject を作成した際に ID や URI を取得し、どこかに保存しておく必要があります。次回、同じ KiiObject を参照する必要が生じた際に、保存しておいた ID や URI を使って KiiObject を取得できます。
ID と KiiObject
KiiObject の ID を取得
既存 KiiObject の uuid
プロパティより、この KiiObject の ID を取得します。
Swift:
// Get the ID of an existing KiiObject.
let id = object !. uuid
Objective-C:
// Get the ID of an existing KiiObject.
NSString * id = object . uuid ;
ID を使って KiiObject を参照
ID を指定して取得したい Bucket の createObject(withID:)
メソッドを実行し、KiiObject のインスタンスを生成します。
Swift:
// Instantiate a KiiObject in a bucket "_app_bucket_" in the application scope.
let bucket = Kii . bucket ( withName : "_app_bucket_" )
let object = bucket . createObject ( withID : id )
do {
// Refresh the KiiObject to retrieve the latest data from Kii Cloud.
try object . refreshSynchronous ()
} catch let error as NSError {
// Handle the error.
return
}
// Instantiate a KiiObject in a bucket "_app_bucket_" in the application scope.
let bucket = Kii . bucket ( withName : "_app_bucket_" )
let object = bucket . createObject ( withID : id )
// Refresh the KiiObject to retrieve the latest data from Kii Cloud.
object . refresh { ( object : KiiObject ?, error : Error ?) -> Void in
if error != nil {
// Handle the error.
return
}
}
Objective-C:
NSError * error = nil ;
// Instantiate a KiiObject in a bucket "_app_bucket_" in the application scope.
KiiBucket * bucket = [ Kii bucketWithName : @"_app_bucket_" ];
KiiObject * object = nil ;
@try {
object = [ bucket createObjectWithID : id ];
}
@catch ( NSException * exp ) {
// The KiiObject ID is invalid.
return ;
}
// Refresh the KiiObject to retrieve the latest data from Kii Cloud.
[ object refreshSynchronous : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
NSError * error = nil ;
// Instantiate a KiiObject in a bucket "_app_bucket_" in the application scope.
KiiBucket * bucket = [ Kii bucketWithName : @"_app_bucket_" ];
KiiObject * object = nil ;
@try {
object = [ bucket createObjectWithID : id ];
}
@catch ( NSException * exp ) {
// The KiiObject ID is invalid.
return ;
}
// Refresh the KiiObject to retrieve the latest data from Kii Cloud.
[ object refreshWithBlock : ^ ( KiiObject * object , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
}];
KiiObject の ID は Bucket 内だけで一意となるため、KiiObject インスタンスの生成は上記の例のように明示的に対象 Bucket を指定して行います。なお設計上、Bucket が異なると同一の ID が取得されることがあります。関連する情報は オブジェクトの ID と URI をご覧ください。
なお、Kii Cloud が割り当てた ID は UUID 形式ですが、KiiObject 作成時にアプリ側で ID を指定した場合はこの限りではありません(指定時の形式の ID となります)。
インスタンス生成後、この KiiObject のキーと値のペアにアクセスする前に refresh(_:)
メソッドを実行します。refres(_:)
メソッドを実行すると Object の最新データが Kii Cloud より取得され、KiiObject の中身がこの内容に更新されます。KiiObject のインスタンスを生成しただけでは、KiiObject の中身は最新のものにならない点に注意してください。
URI と KiiObject
KiiObject の URI を取得
既存 KiiObject の objectURI
プロパティより、この KiiObject の URI を取得します。
Swift:
// Get the URL of an existing KiiObject.
let uri = object !. objectURI
Objective-C:
// Get the URL of an existing KiiObject.
NSString * uri = object . objectURI ;
URI を使って KiiObject を参照
URI を指定して KiiObject(URI:)
メソッドを実行し、KiiObject のインスタンスを生成します。
Swift:
// Instantiate a KiiObject.
let object = KiiObject ( uri : uri ) !
do {
// Refresh the KiiObject to retrieve the latest data from Kii Cloud.
try object . refreshSynchronous ()
} catch let error as NSError {
// Handle the error.
return
}
// Instantiate a KiiObject.
let object = KiiObject ( uri : uri ) !
// Refresh the KiiObject to retrieve the latest data from Kii Cloud.
object . refresh { ( object : KiiObject ?, error : Error ?) -> Void in
if error != nil {
// Handle the error.
return
}
}
Objective-C:
NSError * error = nil ;
// Instantiate a KiiObject.
KiiObject * object = [ KiiObject objectWithURI : uri ];
// Refresh the KiiObject to retrieve the latest data from Kii Cloud.
[ object refreshSynchronous : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
NSError * error = nil ;
// Instantiate a KiiObject.
KiiObject * object = [ KiiObject objectWithURI : uri ];
// Refresh the KiiObject to retrieve the latest data from Kii Cloud.
[ object refreshWithBlock : ^ ( KiiObject * object , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
}];
KiiObject の URI には KiiObject が属する Bucket の情報が含まれています。このため、上記の例のようにインスタンス生成時に対象 Bucket の指定は不要です。関連する情報は オブジェクトの ID と URI をご覧ください。
インスタンス生成後、この KiiObject のキーと値のペアにアクセスする前に refresh(_:)
メソッドを実行します。refresh(_:)
メソッドを実行すると KiiObject の最新データが Kii Cloud より取得され、KiiObject の中身がこの内容に更新されます。KiiObject のインスタンスを生成しただけでは、KiiObject の中身は最新のものにならない点に注意してください。
特に KiiObject(URI:)
メソッドを実行した場合、refresh(_:)
メソッドを実行するまでこの KiiObject の ID は設定されていない状態です。ID の取得は、必ず refresh(_:)
メソッドを実行してから行ってください。