Search code examples
iosiphonedatabaseswiftcloudkit

Fetching CloudKit User Record using UserRecordID


The question is to fetch data from User Records when UserRecordID is fetched.

Method to get User ID: post.creatorUserRecordID?.recordName

My Users Record Type contains columns like username, so, I need to parse them for a concrete user. Is it possible somehow?


Solution

  • If I understood your question and you already have a CKRecordID. All you got to do then is to fetchRecordWithID using this CKRecordID you got.

    let publicDatabase = CKContainer.defaultContainer().publicCloudDatabase
    publicDatabase.fetchRecordWithID(recordId, completionHandler: { (fetchRecord: CKRecord?, fetchError: NSError?) in
        if let error = fetchError
        {
            // error getting user record, try again
            print("-> cloudKitFetchUserRecord - error fetching user record - Error \(error)")
        }
        else
        {
            if let record = fetchRecord
            {
                if record.recordType == CKRecordTypeUserRecord
                {
                    // valid record
                    print("-> cloudKitFetchUserRecord - fetching user record - valid record found - \(record.recordID.recordName))")
    
                   // unwrap your values - on your case username
                   if let object = record.objectForKey("username") as? Bool
                    {
                        // do something with object
                    }
    
                }
                else
                {
                    // not valid record
                    print("-> cloudKitFetchUserRecord - fetching user record - The record that came back is not a CKRecordTypeUserRecord")
                }
            }
            else
            {
                // record nil
                print("-> cloudKitFetchUserRecord - fetching user record - fetch record returned nil")
            }
        }
    })