{"__v":2,"_id":"55a9021527a17d2100525208","category":{"__v":12,"_id":"55a8e7a227a17d21005251a2","pages":["55a8feb327a17d2100525201","55a9021527a17d2100525208","55a9035927a17d210052520b","55a903cfcf45e1390093f29e","55a9049727a17d210052520f","55a9059a27a17d2100525217","55a9066527a17d210052521e","55a9075bcf45e1390093f2a9","55a9090927a17d2100525228","55a90b30c8bd450d000dd164","55a90c56cf45e1390093f2bf","55a9102bc8bd450d000dd170"],"project":"559a61d2dbcfd20d00710b39","version":"559a61d2dbcfd20d00710b3c","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-07-17T11:31:46.263Z","from_sync":false,"order":2,"slug":"ios-sdk-reference","title":"iOS SDK Reference"},"parentDoc":null,"project":"559a61d2dbcfd20d00710b39","user":"559a618bdbcfd20d00710b38","version":{"__v":23,"_id":"559a61d2dbcfd20d00710b3c","project":"559a61d2dbcfd20d00710b39","createdAt":"2015-07-06T11:09:06.510Z","releaseDate":"2015-07-06T11:09:06.510Z","categories":["559a61d3dbcfd20d00710b3d","55a589ddaaf9cf1900114dd0","55a589e30f354f0d00fd0312","55a589ea80c8a30d00b323cc","55a589f6aaf9cf1900114dd1","55a58d4e80c8a30d00b323e6","55a8e7a227a17d21005251a2","55a93098cf45e1390093f351","55afb085f202b12100cd9e83","55afb22e902fd51700f5f8bf","55afb260902fd51700f5f8c2","55afb28ec8a85321007a5462","55afb294f202b12100cd9e95","55afb29b902fd51700f5f8c5","55afb2a1c8a85321007a5463","55afb2a7902fd51700f5f8c7","55afb2ad902fd51700f5f8c8","55afb2b5902fd51700f5f8ca","55b74b2131bccb190081bedc","55bb441b54f9640d006e6cf2","565711085cb2420d00d70071","5681681330018c0d006bf7ff","588f38b5923d610f00c72dad"],"is_deprecated":false,"is_hidden":false,"is_beta":true,"is_stable":true,"codename":"Version 1.0","version_clean":"1.0.0","version":"1"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-07-17T13:24:37.208Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":2,"body":"- The app **User object** manages information about current application user.\n- This object is **optional**, and it is used when the app needs to authenticate the user. \n- The authentication provides data about user’s identity: a unique user ID or similar. \n- The user login and logout calls are managed by the app. \u000b\n\n - To access existing User object, use currentUser property: \u000b\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Access authenticated user object\\nMOCAUser * theUser = [[MOCA currentInstance] currentUser];\\nif (theUser)\\n{\\n    // ...\\n}\\n\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\n\n- To authenticate a new user, use *login:id* call:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Authenticate a user by e-mail address    \\nMOCAUser * currentUser = [[MOCA currentInstance] login::::at:::\\\"UNIQUE_USER_ID\\\"];\\nif (currentUser)\\n{\\n   // ...\\n}\\n\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\n- To logout a user, call:\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"[theUser logout];\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]\n- The user object holds a collection of properties. Property-value pairs can be set and retrieved.\n- Each user object is persisted both locally and in the cloud. \n- It is recommended to perform as many sets as desired and then \njust invoke a single save operation to persist them to the MOCA cloud.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"MOCAUser * theUser = [[MOCA currentInstance] currentUser];    \\nif (theUser)\\n{\\n    [theUser setValue:@”male\\\" forProperty:@”gender\\\"];\\n    [theUser setValue:[NSNumber numberWithInt:1975] forProperty:@”birth_year\\\"];\\u000b    // Asynchronously save the user object to the cloud.\\n    [theUser saveWithBlock:^(MOCAUser *user, NSError *error)\\n        {\\n          if (error) NSLog(@\\\"Save user failed: %@\\\", error);\\n        }\\n    ];\\n}\",\n      \"language\": \"objectivec\"\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"user-api","type":"basic","title":"User API"}
- The app **User object** manages information about current application user. - This object is **optional**, and it is used when the app needs to authenticate the user. - The authentication provides data about user’s identity: a unique user ID or similar. - The user login and logout calls are managed by the app. - To access existing User object, use currentUser property: [block:code] { "codes": [ { "code": "// Access authenticated user object\nMOCAUser * theUser = [[MOCA currentInstance] currentUser];\nif (theUser)\n{\n // ...\n}\n", "language": "objectivec" } ] } [/block] - To authenticate a new user, use *login:id* call: [block:code] { "codes": [ { "code": "// Authenticate a user by e-mail address \nMOCAUser * currentUser = [[MOCA currentInstance] login:@\"UNIQUE_USER_ID\"];\nif (currentUser)\n{\n // ...\n}\n", "language": "objectivec" } ] } [/block] - To logout a user, call: [block:code] { "codes": [ { "code": "[theUser logout];", "language": "objectivec" } ] } [/block] - The user object holds a collection of properties. Property-value pairs can be set and retrieved. - Each user object is persisted both locally and in the cloud. - It is recommended to perform as many sets as desired and then just invoke a single save operation to persist them to the MOCA cloud. [block:code] { "codes": [ { "code": "MOCAUser * theUser = [[MOCA currentInstance] currentUser]; \nif (theUser)\n{\n [theUser setValue:@”male\" forProperty:@”gender\"];\n [theUser setValue:[NSNumber numberWithInt:1975] forProperty:@”birth_year\"];\u000b // Asynchronously save the user object to the cloud.\n [theUser saveWithBlock:^(MOCAUser *user, NSError *error)\n {\n if (error) NSLog(@\"Save user failed: %@\", error);\n }\n ];\n}", "language": "objectivec" } ] } [/block]