Commit b50303b97d2ca5389db38e585f0675f90e7dcaef

Authored by phong
1 parent 915e7d0c7a

update api

Showing 8 changed files with 270 additions and 85 deletions Inline Diff

LifeLog/LifeLog.xcodeproj/project.pbxproj
1 // !$*UTF8*$! 1 // !$*UTF8*$!
2 { 2 {
3 archiveVersion = 1; 3 archiveVersion = 1;
4 classes = { 4 classes = {
5 }; 5 };
6 objectVersion = 46; 6 objectVersion = 46;
7 objects = { 7 objects = {
8 8
9 /* Begin PBXBuildFile section */ 9 /* Begin PBXBuildFile section */
10 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */; }; 10 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */; };
11 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED11F2E39DB0029891F /* LoginViewController.m */; }; 11 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED11F2E39DB0029891F /* LoginViewController.m */; };
12 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E18CED21F2E39DB0029891F /* LoginViewController.xib */; }; 12 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E18CED21F2E39DB0029891F /* LoginViewController.xib */; };
13 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED71F2E3C840029891F /* ServerAPI.m */; }; 13 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED71F2E3C840029891F /* ServerAPI.m */; };
14 6E18CEDC1F2E40F50029891F /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CEDB1F2E40F50029891F /* User.m */; }; 14 6E18CEDC1F2E40F50029891F /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CEDB1F2E40F50029891F /* User.m */; };
15 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */; }; 15 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */; };
16 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; }; 16 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; };
17 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; }; 17 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; };
18 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; }; 18 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; };
19 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; }; 19 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; };
20 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; }; 20 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; };
21 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; }; 21 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; };
22 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; }; 22 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; };
23 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; }; 23 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; };
24 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; }; 24 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; };
25 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; }; 25 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; };
26 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */; }; 26 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */; };
27 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */; }; 27 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */; };
28 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */; }; 28 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */; };
29 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */; }; 29 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */; };
30 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3C31F27ACAE001EB88E /* MapViewController.m */; }; 30 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3C31F27ACAE001EB88E /* MapViewController.m */; };
31 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */; }; 31 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */; };
32 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */; }; 32 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */; };
33 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */; }; 33 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */; };
34 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */; }; 34 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */; };
35 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; }; 35 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; };
36 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; }; 36 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; };
37 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; }; 37 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; };
38 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */; };
39 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */; };
38 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; }; 40 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; };
39 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; }; 41 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; };
40 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; }; 42 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; };
41 /* End PBXBuildFile section */ 43 /* End PBXBuildFile section */
42 44
43 /* Begin PBXContainerItemProxy section */ 45 /* Begin PBXContainerItemProxy section */
44 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = { 46 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = {
45 isa = PBXContainerItemProxy; 47 isa = PBXContainerItemProxy;
46 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 48 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
47 proxyType = 1; 49 proxyType = 1;
48 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 50 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
49 remoteInfo = LifeLog; 51 remoteInfo = LifeLog;
50 }; 52 };
51 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = { 53 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = {
52 isa = PBXContainerItemProxy; 54 isa = PBXContainerItemProxy;
53 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 55 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
54 proxyType = 1; 56 proxyType = 1;
55 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 57 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
56 remoteInfo = LifeLog; 58 remoteInfo = LifeLog;
57 }; 59 };
58 /* End PBXContainerItemProxy section */ 60 /* End PBXContainerItemProxy section */
59 61
60 /* Begin PBXFileReference section */ 62 /* Begin PBXFileReference section */
61 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.debug.xcconfig"; sourceTree = "<group>"; }; 63 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.debug.xcconfig"; sourceTree = "<group>"; };
62 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LifeLog.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 64 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LifeLog.framework; sourceTree = BUILT_PRODUCTS_DIR; };
63 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.release.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.release.xcconfig"; sourceTree = "<group>"; }; 65 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LifeLog.release.xcconfig"; path = "Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog.release.xcconfig"; sourceTree = "<group>"; };
64 6E18CED01F2E39DB0029891F /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; }; 66 6E18CED01F2E39DB0029891F /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; };
65 6E18CED11F2E39DB0029891F /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; }; 67 6E18CED11F2E39DB0029891F /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; };
66 6E18CED21F2E39DB0029891F /* LoginViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; }; 68 6E18CED21F2E39DB0029891F /* LoginViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; };
67 6E18CED61F2E3C840029891F /* ServerAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerAPI.h; sourceTree = "<group>"; }; 69 6E18CED61F2E3C840029891F /* ServerAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerAPI.h; sourceTree = "<group>"; };
68 6E18CED71F2E3C840029891F /* ServerAPI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerAPI.m; sourceTree = "<group>"; }; 70 6E18CED71F2E3C840029891F /* ServerAPI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerAPI.m; sourceTree = "<group>"; };
69 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; }; 71 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; };
70 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; }; 72 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; };
71 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; }; 73 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; };
72 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; }; 74 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; };
73 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; }; 75 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; };
74 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; 76 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; };
75 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; 77 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
76 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; 78 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
77 6E84E3781F27A701001EB88E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; 79 6E84E3781F27A701001EB88E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
78 6E84E3801F27A701001EB88E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 80 6E84E3801F27A701001EB88E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
79 6E84E3831F27A701001EB88E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 81 6E84E3831F27A701001EB88E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
80 6E84E3851F27A701001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 82 6E84E3851F27A701001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
81 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 83 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
82 6E84E38E1F27A703001EB88E /* LifeLogTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogTests.m; sourceTree = "<group>"; }; 84 6E84E38E1F27A703001EB88E /* LifeLogTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogTests.m; sourceTree = "<group>"; };
83 6E84E3901F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 85 6E84E3901F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
84 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 86 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
85 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = "<group>"; }; 87 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = "<group>"; };
86 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 88 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
87 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; }; 89 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
88 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; }; 90 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
89 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; }; 91 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; };
90 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; }; 92 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; };
91 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = "<group>"; }; 93 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = "<group>"; };
92 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = "<group>"; }; 94 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = "<group>"; };
93 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingViewController.h; sourceTree = "<group>"; }; 95 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingViewController.h; sourceTree = "<group>"; };
94 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingViewController.m; sourceTree = "<group>"; }; 96 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingViewController.m; sourceTree = "<group>"; };
95 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingViewController.xib; sourceTree = "<group>"; }; 97 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingViewController.xib; sourceTree = "<group>"; };
96 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSViewController.h; sourceTree = "<group>"; }; 98 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSViewController.h; sourceTree = "<group>"; };
97 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSViewController.m; sourceTree = "<group>"; }; 99 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSViewController.m; sourceTree = "<group>"; };
98 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSViewController.xib; sourceTree = "<group>"; }; 100 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSViewController.xib; sourceTree = "<group>"; };
99 6E84E3C21F27ACAE001EB88E /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewController.h; sourceTree = "<group>"; }; 101 6E84E3C21F27ACAE001EB88E /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewController.h; sourceTree = "<group>"; };
100 6E84E3C31F27ACAE001EB88E /* MapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewController.m; sourceTree = "<group>"; }; 102 6E84E3C31F27ACAE001EB88E /* MapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewController.m; sourceTree = "<group>"; };
101 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; }; 103 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; };
102 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = "<group>"; }; 104 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = "<group>"; };
103 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = "<group>"; }; 105 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = "<group>"; };
104 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TodayViewController.xib; sourceTree = "<group>"; }; 106 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TodayViewController.xib; sourceTree = "<group>"; };
105 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+helper.h"; sourceTree = "<group>"; }; 107 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+helper.h"; sourceTree = "<group>"; };
106 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+helper.m"; sourceTree = "<group>"; }; 108 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+helper.m"; sourceTree = "<group>"; };
107 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; }; 109 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; };
108 6EDC8BED1F2C2FB800765ACC /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; }; 110 6EDC8BED1F2C2FB800765ACC /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; };
109 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; }; 111 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; };
110 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; }; 112 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; };
111 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; }; 113 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
114 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfirmForgetPassViewController.h; sourceTree = "<group>"; };
115 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfirmForgetPassViewController.m; sourceTree = "<group>"; };
116 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfirmForgetPassViewController.xib; sourceTree = "<group>"; };
112 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; }; 117 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; };
113 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; }; 118 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; };
114 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; }; 119 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; };
115 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterViewController.m; sourceTree = "<group>"; }; 120 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterViewController.m; sourceTree = "<group>"; };
116 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RegisterViewController.xib; sourceTree = "<group>"; }; 121 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RegisterViewController.xib; sourceTree = "<group>"; };
117 /* End PBXFileReference section */ 122 /* End PBXFileReference section */
118 123
119 /* Begin PBXFrameworksBuildPhase section */ 124 /* Begin PBXFrameworksBuildPhase section */
120 6E84E36E1F27A700001EB88E /* Frameworks */ = { 125 6E84E36E1F27A700001EB88E /* Frameworks */ = {
121 isa = PBXFrameworksBuildPhase; 126 isa = PBXFrameworksBuildPhase;
122 buildActionMask = 2147483647; 127 buildActionMask = 2147483647;
123 files = ( 128 files = (
124 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */, 129 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */,
125 ); 130 );
126 runOnlyForDeploymentPostprocessing = 0; 131 runOnlyForDeploymentPostprocessing = 0;
127 }; 132 };
128 6E84E3871F27A703001EB88E /* Frameworks */ = { 133 6E84E3871F27A703001EB88E /* Frameworks */ = {
129 isa = PBXFrameworksBuildPhase; 134 isa = PBXFrameworksBuildPhase;
130 buildActionMask = 2147483647; 135 buildActionMask = 2147483647;
131 files = ( 136 files = (
132 ); 137 );
133 runOnlyForDeploymentPostprocessing = 0; 138 runOnlyForDeploymentPostprocessing = 0;
134 }; 139 };
135 6E84E3921F27A703001EB88E /* Frameworks */ = { 140 6E84E3921F27A703001EB88E /* Frameworks */ = {
136 isa = PBXFrameworksBuildPhase; 141 isa = PBXFrameworksBuildPhase;
137 buildActionMask = 2147483647; 142 buildActionMask = 2147483647;
138 files = ( 143 files = (
139 ); 144 );
140 runOnlyForDeploymentPostprocessing = 0; 145 runOnlyForDeploymentPostprocessing = 0;
141 }; 146 };
142 /* End PBXFrameworksBuildPhase section */ 147 /* End PBXFrameworksBuildPhase section */
143 148
144 /* Begin PBXGroup section */ 149 /* Begin PBXGroup section */
145 020C1721B642EF36F31E1BB4 /* Frameworks */ = { 150 020C1721B642EF36F31E1BB4 /* Frameworks */ = {
146 isa = PBXGroup; 151 isa = PBXGroup;
147 children = ( 152 children = (
148 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */, 153 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */,
149 ); 154 );
150 name = Frameworks; 155 name = Frameworks;
151 sourceTree = "<group>"; 156 sourceTree = "<group>";
152 }; 157 };
153 6E18CECF1F2E398C0029891F /* Login */ = { 158 6E18CECF1F2E398C0029891F /* Login */ = {
154 isa = PBXGroup; 159 isa = PBXGroup;
155 children = ( 160 children = (
161 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */,
156 6E18CED01F2E39DB0029891F /* LoginViewController.h */, 162 6E18CED01F2E39DB0029891F /* LoginViewController.h */,
157 6E18CED11F2E39DB0029891F /* LoginViewController.m */, 163 6E18CED11F2E39DB0029891F /* LoginViewController.m */,
158 6E18CED21F2E39DB0029891F /* LoginViewController.xib */, 164 6E18CED21F2E39DB0029891F /* LoginViewController.xib */,
159 ); 165 );
160 name = Login; 166 name = Login;
161 sourceTree = "<group>"; 167 sourceTree = "<group>";
162 }; 168 };
163 6E18CED51F2E3C0E0029891F /* ServerAPI */ = { 169 6E18CED51F2E3C0E0029891F /* ServerAPI */ = {
164 isa = PBXGroup; 170 isa = PBXGroup;
165 children = ( 171 children = (
166 6E18CED61F2E3C840029891F /* ServerAPI.h */, 172 6E18CED61F2E3C840029891F /* ServerAPI.h */,
167 6E18CED71F2E3C840029891F /* ServerAPI.m */, 173 6E18CED71F2E3C840029891F /* ServerAPI.m */,
168 ); 174 );
169 name = ServerAPI; 175 name = ServerAPI;
170 sourceTree = "<group>"; 176 sourceTree = "<group>";
171 }; 177 };
172 6E18CED91F2E40AE0029891F /* Model */ = { 178 6E18CED91F2E40AE0029891F /* Model */ = {
173 isa = PBXGroup; 179 isa = PBXGroup;
174 children = ( 180 children = (
175 6E18CEDA1F2E40F50029891F /* User.h */, 181 6E18CEDA1F2E40F50029891F /* User.h */,
176 6E18CEDB1F2E40F50029891F /* User.m */, 182 6E18CEDB1F2E40F50029891F /* User.m */,
177 6E18CEDD1F2E46570029891F /* Entities.h */, 183 6E18CEDD1F2E46570029891F /* Entities.h */,
178 ); 184 );
179 name = Model; 185 name = Model;
180 sourceTree = "<group>"; 186 sourceTree = "<group>";
181 }; 187 };
182 6E84E3681F27A700001EB88E = { 188 6E84E3681F27A700001EB88E = {
183 isa = PBXGroup; 189 isa = PBXGroup;
184 children = ( 190 children = (
185 6E84E3731F27A700001EB88E /* LifeLog */, 191 6E84E3731F27A700001EB88E /* LifeLog */,
186 6E84E38D1F27A703001EB88E /* LifeLogTests */, 192 6E84E38D1F27A703001EB88E /* LifeLogTests */,
187 6E84E3981F27A703001EB88E /* LifeLogUITests */, 193 6E84E3981F27A703001EB88E /* LifeLogUITests */,
188 6E84E3721F27A700001EB88E /* Products */, 194 6E84E3721F27A700001EB88E /* Products */,
189 DE8269E957EA47CD771BAB33 /* Pods */, 195 DE8269E957EA47CD771BAB33 /* Pods */,
190 020C1721B642EF36F31E1BB4 /* Frameworks */, 196 020C1721B642EF36F31E1BB4 /* Frameworks */,
191 ); 197 );
192 sourceTree = "<group>"; 198 sourceTree = "<group>";
193 }; 199 };
194 6E84E3721F27A700001EB88E /* Products */ = { 200 6E84E3721F27A700001EB88E /* Products */ = {
195 isa = PBXGroup; 201 isa = PBXGroup;
196 children = ( 202 children = (
197 6E84E3711F27A700001EB88E /* LifeLog.app */, 203 6E84E3711F27A700001EB88E /* LifeLog.app */,
198 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */, 204 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */,
199 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */, 205 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */,
200 ); 206 );
201 name = Products; 207 name = Products;
202 sourceTree = "<group>"; 208 sourceTree = "<group>";
203 }; 209 };
204 6E84E3731F27A700001EB88E /* LifeLog */ = { 210 6E84E3731F27A700001EB88E /* LifeLog */ = {
205 isa = PBXGroup; 211 isa = PBXGroup;
206 children = ( 212 children = (
207 6E18CED91F2E40AE0029891F /* Model */, 213 6E18CED91F2E40AE0029891F /* Model */,
208 6E18CED51F2E3C0E0029891F /* ServerAPI */, 214 6E18CED51F2E3C0E0029891F /* ServerAPI */,
209 6EDC8BEB1F2C2F3300765ACC /* Common */, 215 6EDC8BEB1F2C2F3300765ACC /* Common */,
210 6ECC406D1F2A5FA500AAEB97 /* Library */, 216 6ECC406D1F2A5FA500AAEB97 /* Library */,
211 6E84E3A81F27A8A9001EB88E /* ViewControllers */, 217 6E84E3A81F27A8A9001EB88E /* ViewControllers */,
212 6E84E3A71F27A887001EB88E /* AppDelegate */, 218 6E84E3A71F27A887001EB88E /* AppDelegate */,
213 6E84E3801F27A701001EB88E /* Assets.xcassets */, 219 6E84E3801F27A701001EB88E /* Assets.xcassets */,
214 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */, 220 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */,
215 6E84E3851F27A701001EB88E /* Info.plist */, 221 6E84E3851F27A701001EB88E /* Info.plist */,
216 6E84E3741F27A701001EB88E /* Supporting Files */, 222 6E84E3741F27A701001EB88E /* Supporting Files */,
217 ); 223 );
218 path = LifeLog; 224 path = LifeLog;
219 sourceTree = "<group>"; 225 sourceTree = "<group>";
220 }; 226 };
221 6E84E3741F27A701001EB88E /* Supporting Files */ = { 227 6E84E3741F27A701001EB88E /* Supporting Files */ = {
222 isa = PBXGroup; 228 isa = PBXGroup;
223 children = ( 229 children = (
224 6E84E3751F27A701001EB88E /* main.m */, 230 6E84E3751F27A701001EB88E /* main.m */,
225 6EF163091F29069300DA306C /* Localizable.strings */, 231 6EF163091F29069300DA306C /* Localizable.strings */,
226 ); 232 );
227 name = "Supporting Files"; 233 name = "Supporting Files";
228 sourceTree = "<group>"; 234 sourceTree = "<group>";
229 }; 235 };
230 6E84E38D1F27A703001EB88E /* LifeLogTests */ = { 236 6E84E38D1F27A703001EB88E /* LifeLogTests */ = {
231 isa = PBXGroup; 237 isa = PBXGroup;
232 children = ( 238 children = (
233 6E84E38E1F27A703001EB88E /* LifeLogTests.m */, 239 6E84E38E1F27A703001EB88E /* LifeLogTests.m */,
234 6E84E3901F27A703001EB88E /* Info.plist */, 240 6E84E3901F27A703001EB88E /* Info.plist */,
235 ); 241 );
236 path = LifeLogTests; 242 path = LifeLogTests;
237 sourceTree = "<group>"; 243 sourceTree = "<group>";
238 }; 244 };
239 6E84E3981F27A703001EB88E /* LifeLogUITests */ = { 245 6E84E3981F27A703001EB88E /* LifeLogUITests */ = {
240 isa = PBXGroup; 246 isa = PBXGroup;
241 children = ( 247 children = (
242 6E84E3991F27A703001EB88E /* LifeLogUITests.m */, 248 6E84E3991F27A703001EB88E /* LifeLogUITests.m */,
243 6E84E39B1F27A703001EB88E /* Info.plist */, 249 6E84E39B1F27A703001EB88E /* Info.plist */,
244 ); 250 );
245 path = LifeLogUITests; 251 path = LifeLogUITests;
246 sourceTree = "<group>"; 252 sourceTree = "<group>";
247 }; 253 };
248 6E84E3A71F27A887001EB88E /* AppDelegate */ = { 254 6E84E3A71F27A887001EB88E /* AppDelegate */ = {
249 isa = PBXGroup; 255 isa = PBXGroup;
250 children = ( 256 children = (
251 6E84E3771F27A701001EB88E /* AppDelegate.h */, 257 6E84E3771F27A701001EB88E /* AppDelegate.h */,
252 6E84E3781F27A701001EB88E /* AppDelegate.m */, 258 6E84E3781F27A701001EB88E /* AppDelegate.m */,
253 ); 259 );
254 name = AppDelegate; 260 name = AppDelegate;
255 sourceTree = "<group>"; 261 sourceTree = "<group>";
256 }; 262 };
257 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = { 263 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = {
258 isa = PBXGroup; 264 isa = PBXGroup;
259 children = ( 265 children = (
260 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */, 266 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */,
261 9CBDA0FB1F2F03490055DED1 /* Register */, 267 9CBDA0FB1F2F03490055DED1 /* Register */,
262 6E18CECF1F2E398C0029891F /* Login */, 268 6E18CECF1F2E398C0029891F /* Login */,
263 6E84E3AC1F27A954001EB88E /* SNS */, 269 6E84E3AC1F27A954001EB88E /* SNS */,
264 6E84E3C11F27AC89001EB88E /* Map */, 270 6E84E3C11F27AC89001EB88E /* Map */,
265 6E84E3AB1F27A946001EB88E /* Ranking */, 271 6E84E3AB1F27A946001EB88E /* Ranking */,
266 6E84E3AA1F27A924001EB88E /* History */, 272 6E84E3AA1F27A924001EB88E /* History */,
267 6E84E3A91F27A915001EB88E /* Home */, 273 6E84E3A91F27A915001EB88E /* Home */,
268 ); 274 );
269 name = ViewControllers; 275 name = ViewControllers;
270 sourceTree = "<group>"; 276 sourceTree = "<group>";
271 }; 277 };
272 6E84E3A91F27A915001EB88E /* Home */ = { 278 6E84E3A91F27A915001EB88E /* Home */ = {
273 isa = PBXGroup; 279 isa = PBXGroup;
274 children = ( 280 children = (
275 6E8DA0F31F2BAC0800CCE941 /* Today */, 281 6E8DA0F31F2BAC0800CCE941 /* Today */,
276 6E84E3AD1F27A975001EB88E /* HomeViewController.h */, 282 6E84E3AD1F27A975001EB88E /* HomeViewController.h */,
277 6E84E3AE1F27A975001EB88E /* HomeViewController.m */, 283 6E84E3AE1F27A975001EB88E /* HomeViewController.m */,
278 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */, 284 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */,
279 ); 285 );
280 name = Home; 286 name = Home;
281 sourceTree = "<group>"; 287 sourceTree = "<group>";
282 }; 288 };
283 6E84E3AA1F27A924001EB88E /* History */ = { 289 6E84E3AA1F27A924001EB88E /* History */ = {
284 isa = PBXGroup; 290 isa = PBXGroup;
285 children = ( 291 children = (
286 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */, 292 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */,
287 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */, 293 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */,
288 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */, 294 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */,
289 ); 295 );
290 name = History; 296 name = History;
291 sourceTree = "<group>"; 297 sourceTree = "<group>";
292 }; 298 };
293 6E84E3AB1F27A946001EB88E /* Ranking */ = { 299 6E84E3AB1F27A946001EB88E /* Ranking */ = {
294 isa = PBXGroup; 300 isa = PBXGroup;
295 children = ( 301 children = (
296 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */, 302 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */,
297 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */, 303 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */,
298 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */, 304 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */,
299 ); 305 );
300 name = Ranking; 306 name = Ranking;
301 sourceTree = "<group>"; 307 sourceTree = "<group>";
302 }; 308 };
303 6E84E3AC1F27A954001EB88E /* SNS */ = { 309 6E84E3AC1F27A954001EB88E /* SNS */ = {
304 isa = PBXGroup; 310 isa = PBXGroup;
305 children = ( 311 children = (
306 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */, 312 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */,
307 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */, 313 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */,
308 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */, 314 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */,
309 ); 315 );
310 name = SNS; 316 name = SNS;
311 sourceTree = "<group>"; 317 sourceTree = "<group>";
312 }; 318 };
313 6E84E3C11F27AC89001EB88E /* Map */ = { 319 6E84E3C11F27AC89001EB88E /* Map */ = {
314 isa = PBXGroup; 320 isa = PBXGroup;
315 children = ( 321 children = (
316 6E84E3C21F27ACAE001EB88E /* MapViewController.h */, 322 6E84E3C21F27ACAE001EB88E /* MapViewController.h */,
317 6E84E3C31F27ACAE001EB88E /* MapViewController.m */, 323 6E84E3C31F27ACAE001EB88E /* MapViewController.m */,
318 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */, 324 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */,
319 ); 325 );
320 name = Map; 326 name = Map;
321 sourceTree = "<group>"; 327 sourceTree = "<group>";
322 }; 328 };
323 6E8DA0F31F2BAC0800CCE941 /* Today */ = { 329 6E8DA0F31F2BAC0800CCE941 /* Today */ = {
324 isa = PBXGroup; 330 isa = PBXGroup;
325 children = ( 331 children = (
326 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */, 332 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */,
327 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */, 333 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */,
328 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */, 334 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */,
329 ); 335 );
330 name = Today; 336 name = Today;
331 sourceTree = "<group>"; 337 sourceTree = "<group>";
332 }; 338 };
333 6ECC406D1F2A5FA500AAEB97 /* Library */ = { 339 6ECC406D1F2A5FA500AAEB97 /* Library */ = {
334 isa = PBXGroup; 340 isa = PBXGroup;
335 children = ( 341 children = (
336 6ECC406E1F2A5FB200AAEB97 /* Category */, 342 6ECC406E1F2A5FB200AAEB97 /* Category */,
337 ); 343 );
338 name = Library; 344 name = Library;
339 sourceTree = "<group>"; 345 sourceTree = "<group>";
340 }; 346 };
341 6ECC406E1F2A5FB200AAEB97 /* Category */ = { 347 6ECC406E1F2A5FB200AAEB97 /* Category */ = {
342 isa = PBXGroup; 348 isa = PBXGroup;
343 children = ( 349 children = (
344 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */, 350 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */,
345 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */, 351 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */,
346 ); 352 );
347 name = Category; 353 name = Category;
348 sourceTree = "<group>"; 354 sourceTree = "<group>";
349 }; 355 };
350 6EDC8BEB1F2C2F3300765ACC /* Common */ = { 356 6EDC8BEB1F2C2F3300765ACC /* Common */ = {
351 isa = PBXGroup; 357 isa = PBXGroup;
352 children = ( 358 children = (
353 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */, 359 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */,
354 6EDC8BED1F2C2FB800765ACC /* Utilities.m */, 360 6EDC8BED1F2C2FB800765ACC /* Utilities.m */,
355 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */, 361 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */,
356 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */, 362 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */,
357 ); 363 );
358 name = Common; 364 name = Common;
359 sourceTree = "<group>"; 365 sourceTree = "<group>";
360 }; 366 };
367 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = {
368 isa = PBXGroup;
369 children = (
370 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */,
371 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */,
372 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */,
373 );
374 name = ConfirmForgetPass;
375 sourceTree = "<group>";
376 };
361 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = { 377 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = {
362 isa = PBXGroup; 378 isa = PBXGroup;
363 children = ( 379 children = (
364 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */, 380 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */,
365 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */, 381 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */,
366 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */, 382 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */,
367 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */, 383 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */,
368 ); 384 );
369 name = BaseViewController; 385 name = BaseViewController;
370 sourceTree = "<group>"; 386 sourceTree = "<group>";
371 }; 387 };
372 9CBDA0FB1F2F03490055DED1 /* Register */ = { 388 9CBDA0FB1F2F03490055DED1 /* Register */ = {
373 isa = PBXGroup; 389 isa = PBXGroup;
374 children = ( 390 children = (
375 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */, 391 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */,
376 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */, 392 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */,
377 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */, 393 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */,
378 ); 394 );
379 name = Register; 395 name = Register;
380 sourceTree = "<group>"; 396 sourceTree = "<group>";
381 }; 397 };
382 DE8269E957EA47CD771BAB33 /* Pods */ = { 398 DE8269E957EA47CD771BAB33 /* Pods */ = {
383 isa = PBXGroup; 399 isa = PBXGroup;
384 children = ( 400 children = (
385 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */, 401 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */,
386 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */, 402 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */,
387 ); 403 );
388 name = Pods; 404 name = Pods;
389 sourceTree = "<group>"; 405 sourceTree = "<group>";
390 }; 406 };
391 /* End PBXGroup section */ 407 /* End PBXGroup section */
392 408
393 /* Begin PBXNativeTarget section */ 409 /* Begin PBXNativeTarget section */
394 6E84E3701F27A700001EB88E /* LifeLog */ = { 410 6E84E3701F27A700001EB88E /* LifeLog */ = {
395 isa = PBXNativeTarget; 411 isa = PBXNativeTarget;
396 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */; 412 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */;
397 buildPhases = ( 413 buildPhases = (
398 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */, 414 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */,
399 6E84E36D1F27A700001EB88E /* Sources */, 415 6E84E36D1F27A700001EB88E /* Sources */,
400 6E84E36E1F27A700001EB88E /* Frameworks */, 416 6E84E36E1F27A700001EB88E /* Frameworks */,
401 6E84E36F1F27A700001EB88E /* Resources */, 417 6E84E36F1F27A700001EB88E /* Resources */,
402 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */, 418 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */,
403 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */, 419 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */,
404 ); 420 );
405 buildRules = ( 421 buildRules = (
406 ); 422 );
407 dependencies = ( 423 dependencies = (
408 ); 424 );
409 name = LifeLog; 425 name = LifeLog;
410 productName = LifeLog; 426 productName = LifeLog;
411 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */; 427 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */;
412 productType = "com.apple.product-type.application"; 428 productType = "com.apple.product-type.application";
413 }; 429 };
414 6E84E3891F27A703001EB88E /* LifeLogTests */ = { 430 6E84E3891F27A703001EB88E /* LifeLogTests */ = {
415 isa = PBXNativeTarget; 431 isa = PBXNativeTarget;
416 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */; 432 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */;
417 buildPhases = ( 433 buildPhases = (
418 6E84E3861F27A703001EB88E /* Sources */, 434 6E84E3861F27A703001EB88E /* Sources */,
419 6E84E3871F27A703001EB88E /* Frameworks */, 435 6E84E3871F27A703001EB88E /* Frameworks */,
420 6E84E3881F27A703001EB88E /* Resources */, 436 6E84E3881F27A703001EB88E /* Resources */,
421 ); 437 );
422 buildRules = ( 438 buildRules = (
423 ); 439 );
424 dependencies = ( 440 dependencies = (
425 6E84E38C1F27A703001EB88E /* PBXTargetDependency */, 441 6E84E38C1F27A703001EB88E /* PBXTargetDependency */,
426 ); 442 );
427 name = LifeLogTests; 443 name = LifeLogTests;
428 productName = LifeLogTests; 444 productName = LifeLogTests;
429 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */; 445 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */;
430 productType = "com.apple.product-type.bundle.unit-test"; 446 productType = "com.apple.product-type.bundle.unit-test";
431 }; 447 };
432 6E84E3941F27A703001EB88E /* LifeLogUITests */ = { 448 6E84E3941F27A703001EB88E /* LifeLogUITests */ = {
433 isa = PBXNativeTarget; 449 isa = PBXNativeTarget;
434 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */; 450 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */;
435 buildPhases = ( 451 buildPhases = (
436 6E84E3911F27A703001EB88E /* Sources */, 452 6E84E3911F27A703001EB88E /* Sources */,
437 6E84E3921F27A703001EB88E /* Frameworks */, 453 6E84E3921F27A703001EB88E /* Frameworks */,
438 6E84E3931F27A703001EB88E /* Resources */, 454 6E84E3931F27A703001EB88E /* Resources */,
439 ); 455 );
440 buildRules = ( 456 buildRules = (
441 ); 457 );
442 dependencies = ( 458 dependencies = (
443 6E84E3971F27A703001EB88E /* PBXTargetDependency */, 459 6E84E3971F27A703001EB88E /* PBXTargetDependency */,
444 ); 460 );
445 name = LifeLogUITests; 461 name = LifeLogUITests;
446 productName = LifeLogUITests; 462 productName = LifeLogUITests;
447 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */; 463 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */;
448 productType = "com.apple.product-type.bundle.ui-testing"; 464 productType = "com.apple.product-type.bundle.ui-testing";
449 }; 465 };
450 /* End PBXNativeTarget section */ 466 /* End PBXNativeTarget section */
451 467
452 /* Begin PBXProject section */ 468 /* Begin PBXProject section */
453 6E84E3691F27A700001EB88E /* Project object */ = { 469 6E84E3691F27A700001EB88E /* Project object */ = {
454 isa = PBXProject; 470 isa = PBXProject;
455 attributes = { 471 attributes = {
456 LastUpgradeCheck = 0830; 472 LastUpgradeCheck = 0830;
457 ORGANIZATIONNAME = PhongNV; 473 ORGANIZATIONNAME = PhongNV;
458 TargetAttributes = { 474 TargetAttributes = {
459 6E84E3701F27A700001EB88E = { 475 6E84E3701F27A700001EB88E = {
460 CreatedOnToolsVersion = 8.3.3; 476 CreatedOnToolsVersion = 8.3.3;
461 DevelopmentTeam = UXU4V3VUN4; 477 DevelopmentTeam = UXU4V3VUN4;
462 ProvisioningStyle = Manual; 478 ProvisioningStyle = Manual;
463 }; 479 };
464 6E84E3891F27A703001EB88E = { 480 6E84E3891F27A703001EB88E = {
465 CreatedOnToolsVersion = 8.3.3; 481 CreatedOnToolsVersion = 8.3.3;
466 ProvisioningStyle = Automatic; 482 ProvisioningStyle = Automatic;
467 TestTargetID = 6E84E3701F27A700001EB88E; 483 TestTargetID = 6E84E3701F27A700001EB88E;
468 }; 484 };
469 6E84E3941F27A703001EB88E = { 485 6E84E3941F27A703001EB88E = {
470 CreatedOnToolsVersion = 8.3.3; 486 CreatedOnToolsVersion = 8.3.3;
471 ProvisioningStyle = Automatic; 487 ProvisioningStyle = Automatic;
472 TestTargetID = 6E84E3701F27A700001EB88E; 488 TestTargetID = 6E84E3701F27A700001EB88E;
473 }; 489 };
474 }; 490 };
475 }; 491 };
476 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */; 492 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */;
477 compatibilityVersion = "Xcode 3.2"; 493 compatibilityVersion = "Xcode 3.2";
478 developmentRegion = English; 494 developmentRegion = English;
479 hasScannedForEncodings = 0; 495 hasScannedForEncodings = 0;
480 knownRegions = ( 496 knownRegions = (
481 en, 497 en,
482 Base, 498 Base,
483 ); 499 );
484 mainGroup = 6E84E3681F27A700001EB88E; 500 mainGroup = 6E84E3681F27A700001EB88E;
485 productRefGroup = 6E84E3721F27A700001EB88E /* Products */; 501 productRefGroup = 6E84E3721F27A700001EB88E /* Products */;
486 projectDirPath = ""; 502 projectDirPath = "";
487 projectRoot = ""; 503 projectRoot = "";
488 targets = ( 504 targets = (
489 6E84E3701F27A700001EB88E /* LifeLog */, 505 6E84E3701F27A700001EB88E /* LifeLog */,
490 6E84E3891F27A703001EB88E /* LifeLogTests */, 506 6E84E3891F27A703001EB88E /* LifeLogTests */,
491 6E84E3941F27A703001EB88E /* LifeLogUITests */, 507 6E84E3941F27A703001EB88E /* LifeLogUITests */,
492 ); 508 );
493 }; 509 };
494 /* End PBXProject section */ 510 /* End PBXProject section */
495 511
496 /* Begin PBXResourcesBuildPhase section */ 512 /* Begin PBXResourcesBuildPhase section */
497 6E84E36F1F27A700001EB88E /* Resources */ = { 513 6E84E36F1F27A700001EB88E /* Resources */ = {
498 isa = PBXResourcesBuildPhase; 514 isa = PBXResourcesBuildPhase;
499 buildActionMask = 2147483647; 515 buildActionMask = 2147483647;
500 files = ( 516 files = (
501 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */, 517 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */,
502 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */, 518 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */,
503 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */, 519 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */,
520 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */,
504 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */, 521 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */,
505 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */, 522 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */,
506 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */, 523 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */,
507 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */, 524 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */,
508 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */, 525 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */,
509 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */, 526 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */,
510 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */, 527 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */,
511 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */, 528 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */,
512 ); 529 );
513 runOnlyForDeploymentPostprocessing = 0; 530 runOnlyForDeploymentPostprocessing = 0;
514 }; 531 };
515 6E84E3881F27A703001EB88E /* Resources */ = { 532 6E84E3881F27A703001EB88E /* Resources */ = {
516 isa = PBXResourcesBuildPhase; 533 isa = PBXResourcesBuildPhase;
517 buildActionMask = 2147483647; 534 buildActionMask = 2147483647;
518 files = ( 535 files = (
519 ); 536 );
520 runOnlyForDeploymentPostprocessing = 0; 537 runOnlyForDeploymentPostprocessing = 0;
521 }; 538 };
522 6E84E3931F27A703001EB88E /* Resources */ = { 539 6E84E3931F27A703001EB88E /* Resources */ = {
523 isa = PBXResourcesBuildPhase; 540 isa = PBXResourcesBuildPhase;
524 buildActionMask = 2147483647; 541 buildActionMask = 2147483647;
525 files = ( 542 files = (
526 ); 543 );
527 runOnlyForDeploymentPostprocessing = 0; 544 runOnlyForDeploymentPostprocessing = 0;
528 }; 545 };
529 /* End PBXResourcesBuildPhase section */ 546 /* End PBXResourcesBuildPhase section */
530 547
531 /* Begin PBXShellScriptBuildPhase section */ 548 /* Begin PBXShellScriptBuildPhase section */
532 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = { 549 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = {
533 isa = PBXShellScriptBuildPhase; 550 isa = PBXShellScriptBuildPhase;
534 buildActionMask = 2147483647; 551 buildActionMask = 2147483647;
535 files = ( 552 files = (
536 ); 553 );
537 inputPaths = ( 554 inputPaths = (
538 ); 555 );
539 name = "[CP] Embed Pods Frameworks"; 556 name = "[CP] Embed Pods Frameworks";
540 outputPaths = ( 557 outputPaths = (
541 ); 558 );
542 runOnlyForDeploymentPostprocessing = 0; 559 runOnlyForDeploymentPostprocessing = 0;
543 shellPath = /bin/sh; 560 shellPath = /bin/sh;
544 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-frameworks.sh\"\n"; 561 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-frameworks.sh\"\n";
545 showEnvVarsInLog = 0; 562 showEnvVarsInLog = 0;
546 }; 563 };
547 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = { 564 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = {
548 isa = PBXShellScriptBuildPhase; 565 isa = PBXShellScriptBuildPhase;
549 buildActionMask = 2147483647; 566 buildActionMask = 2147483647;
550 files = ( 567 files = (
551 ); 568 );
552 inputPaths = ( 569 inputPaths = (
553 ); 570 );
554 name = "[CP] Check Pods Manifest.lock"; 571 name = "[CP] Check Pods Manifest.lock";
555 outputPaths = ( 572 outputPaths = (
556 ); 573 );
557 runOnlyForDeploymentPostprocessing = 0; 574 runOnlyForDeploymentPostprocessing = 0;
558 shellPath = /bin/sh; 575 shellPath = /bin/sh;
559 shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 576 shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
560 showEnvVarsInLog = 0; 577 showEnvVarsInLog = 0;
561 }; 578 };
562 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = { 579 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = {
563 isa = PBXShellScriptBuildPhase; 580 isa = PBXShellScriptBuildPhase;
564 buildActionMask = 2147483647; 581 buildActionMask = 2147483647;
565 files = ( 582 files = (
566 ); 583 );
567 inputPaths = ( 584 inputPaths = (
568 ); 585 );
569 name = "[CP] Copy Pods Resources"; 586 name = "[CP] Copy Pods Resources";
570 outputPaths = ( 587 outputPaths = (
571 ); 588 );
572 runOnlyForDeploymentPostprocessing = 0; 589 runOnlyForDeploymentPostprocessing = 0;
573 shellPath = /bin/sh; 590 shellPath = /bin/sh;
574 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-resources.sh\"\n"; 591 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-resources.sh\"\n";
575 showEnvVarsInLog = 0; 592 showEnvVarsInLog = 0;
576 }; 593 };
577 /* End PBXShellScriptBuildPhase section */ 594 /* End PBXShellScriptBuildPhase section */
578 595
579 /* Begin PBXSourcesBuildPhase section */ 596 /* Begin PBXSourcesBuildPhase section */
580 6E84E36D1F27A700001EB88E /* Sources */ = { 597 6E84E36D1F27A700001EB88E /* Sources */ = {
581 isa = PBXSourcesBuildPhase; 598 isa = PBXSourcesBuildPhase;
582 buildActionMask = 2147483647; 599 buildActionMask = 2147483647;
583 files = ( 600 files = (
584 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */, 601 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */,
585 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */, 602 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */,
586 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */, 603 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */,
587 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */, 604 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */,
588 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */, 605 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */,
589 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */, 606 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */,
590 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */, 607 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */,
591 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */, 608 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */,
592 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */, 609 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */,
610 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */,
593 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */, 611 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */,
594 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */, 612 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */,
595 6E18CEDC1F2E40F50029891F /* User.m in Sources */, 613 6E18CEDC1F2E40F50029891F /* User.m in Sources */,
596 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */, 614 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */,
597 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */, 615 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */,
598 6E84E3761F27A701001EB88E /* main.m in Sources */, 616 6E84E3761F27A701001EB88E /* main.m in Sources */,
599 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */, 617 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */,
600 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */, 618 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */,
601 ); 619 );
602 runOnlyForDeploymentPostprocessing = 0; 620 runOnlyForDeploymentPostprocessing = 0;
603 }; 621 };
604 6E84E3861F27A703001EB88E /* Sources */ = { 622 6E84E3861F27A703001EB88E /* Sources */ = {
605 isa = PBXSourcesBuildPhase; 623 isa = PBXSourcesBuildPhase;
606 buildActionMask = 2147483647; 624 buildActionMask = 2147483647;
607 files = ( 625 files = (
608 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */, 626 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */,
609 ); 627 );
610 runOnlyForDeploymentPostprocessing = 0; 628 runOnlyForDeploymentPostprocessing = 0;
611 }; 629 };
612 6E84E3911F27A703001EB88E /* Sources */ = { 630 6E84E3911F27A703001EB88E /* Sources */ = {
613 isa = PBXSourcesBuildPhase; 631 isa = PBXSourcesBuildPhase;
614 buildActionMask = 2147483647; 632 buildActionMask = 2147483647;
615 files = ( 633 files = (
616 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */, 634 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */,
617 ); 635 );
618 runOnlyForDeploymentPostprocessing = 0; 636 runOnlyForDeploymentPostprocessing = 0;
619 }; 637 };
620 /* End PBXSourcesBuildPhase section */ 638 /* End PBXSourcesBuildPhase section */
621 639
622 /* Begin PBXTargetDependency section */ 640 /* Begin PBXTargetDependency section */
623 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = { 641 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = {
624 isa = PBXTargetDependency; 642 isa = PBXTargetDependency;
625 target = 6E84E3701F27A700001EB88E /* LifeLog */; 643 target = 6E84E3701F27A700001EB88E /* LifeLog */;
626 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */; 644 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */;
627 }; 645 };
628 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = { 646 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = {
629 isa = PBXTargetDependency; 647 isa = PBXTargetDependency;
630 target = 6E84E3701F27A700001EB88E /* LifeLog */; 648 target = 6E84E3701F27A700001EB88E /* LifeLog */;
631 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */; 649 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */;
632 }; 650 };
633 /* End PBXTargetDependency section */ 651 /* End PBXTargetDependency section */
634 652
635 /* Begin PBXVariantGroup section */ 653 /* Begin PBXVariantGroup section */
636 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = { 654 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = {
637 isa = PBXVariantGroup; 655 isa = PBXVariantGroup;
638 children = ( 656 children = (
639 6E84E3831F27A701001EB88E /* Base */, 657 6E84E3831F27A701001EB88E /* Base */,
640 ); 658 );
641 name = LaunchScreen.storyboard; 659 name = LaunchScreen.storyboard;
642 sourceTree = "<group>"; 660 sourceTree = "<group>";
643 }; 661 };
644 /* End PBXVariantGroup section */ 662 /* End PBXVariantGroup section */
645 663
646 /* Begin XCBuildConfiguration section */ 664 /* Begin XCBuildConfiguration section */
647 6E84E39C1F27A703001EB88E /* Debug */ = { 665 6E84E39C1F27A703001EB88E /* Debug */ = {
648 isa = XCBuildConfiguration; 666 isa = XCBuildConfiguration;
649 buildSettings = { 667 buildSettings = {
650 ALWAYS_SEARCH_USER_PATHS = NO; 668 ALWAYS_SEARCH_USER_PATHS = NO;
651 CLANG_ANALYZER_NONNULL = YES; 669 CLANG_ANALYZER_NONNULL = YES;
652 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 670 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
653 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 671 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
654 CLANG_CXX_LIBRARY = "libc++"; 672 CLANG_CXX_LIBRARY = "libc++";
655 CLANG_ENABLE_MODULES = YES; 673 CLANG_ENABLE_MODULES = YES;
656 CLANG_ENABLE_OBJC_ARC = YES; 674 CLANG_ENABLE_OBJC_ARC = YES;
657 CLANG_WARN_BOOL_CONVERSION = YES; 675 CLANG_WARN_BOOL_CONVERSION = YES;
658 CLANG_WARN_CONSTANT_CONVERSION = YES; 676 CLANG_WARN_CONSTANT_CONVERSION = YES;
659 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 677 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
660 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 678 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
661 CLANG_WARN_EMPTY_BODY = YES; 679 CLANG_WARN_EMPTY_BODY = YES;
662 CLANG_WARN_ENUM_CONVERSION = YES; 680 CLANG_WARN_ENUM_CONVERSION = YES;
663 CLANG_WARN_INFINITE_RECURSION = YES; 681 CLANG_WARN_INFINITE_RECURSION = YES;
664 CLANG_WARN_INT_CONVERSION = YES; 682 CLANG_WARN_INT_CONVERSION = YES;
665 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 683 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
666 CLANG_WARN_SUSPICIOUS_MOVE = YES; 684 CLANG_WARN_SUSPICIOUS_MOVE = YES;
667 CLANG_WARN_UNREACHABLE_CODE = YES; 685 CLANG_WARN_UNREACHABLE_CODE = YES;
668 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 686 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
669 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 687 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
670 COPY_PHASE_STRIP = NO; 688 COPY_PHASE_STRIP = NO;
671 DEBUG_INFORMATION_FORMAT = dwarf; 689 DEBUG_INFORMATION_FORMAT = dwarf;
672 ENABLE_STRICT_OBJC_MSGSEND = YES; 690 ENABLE_STRICT_OBJC_MSGSEND = YES;
673 ENABLE_TESTABILITY = YES; 691 ENABLE_TESTABILITY = YES;
674 GCC_C_LANGUAGE_STANDARD = gnu99; 692 GCC_C_LANGUAGE_STANDARD = gnu99;
675 GCC_DYNAMIC_NO_PIC = NO; 693 GCC_DYNAMIC_NO_PIC = NO;
676 GCC_NO_COMMON_BLOCKS = YES; 694 GCC_NO_COMMON_BLOCKS = YES;
677 GCC_OPTIMIZATION_LEVEL = 0; 695 GCC_OPTIMIZATION_LEVEL = 0;
678 GCC_PREPROCESSOR_DEFINITIONS = ( 696 GCC_PREPROCESSOR_DEFINITIONS = (
679 "DEBUG=1", 697 "DEBUG=1",
680 "$(inherited)", 698 "$(inherited)",
681 ); 699 );
682 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 700 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
683 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 701 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
684 GCC_WARN_UNDECLARED_SELECTOR = YES; 702 GCC_WARN_UNDECLARED_SELECTOR = YES;
685 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 703 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
686 GCC_WARN_UNUSED_FUNCTION = YES; 704 GCC_WARN_UNUSED_FUNCTION = YES;
687 GCC_WARN_UNUSED_VARIABLE = YES; 705 GCC_WARN_UNUSED_VARIABLE = YES;
688 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 706 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
689 MTL_ENABLE_DEBUG_INFO = YES; 707 MTL_ENABLE_DEBUG_INFO = YES;
690 ONLY_ACTIVE_ARCH = YES; 708 ONLY_ACTIVE_ARCH = YES;
691 SDKROOT = iphoneos; 709 SDKROOT = iphoneos;
692 TARGETED_DEVICE_FAMILY = "1,2"; 710 TARGETED_DEVICE_FAMILY = "1,2";
693 }; 711 };
694 name = Debug; 712 name = Debug;
695 }; 713 };
696 6E84E39D1F27A703001EB88E /* Release */ = { 714 6E84E39D1F27A703001EB88E /* Release */ = {
697 isa = XCBuildConfiguration; 715 isa = XCBuildConfiguration;
698 buildSettings = { 716 buildSettings = {
699 ALWAYS_SEARCH_USER_PATHS = NO; 717 ALWAYS_SEARCH_USER_PATHS = NO;
700 CLANG_ANALYZER_NONNULL = YES; 718 CLANG_ANALYZER_NONNULL = YES;
701 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 719 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
702 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 720 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
703 CLANG_CXX_LIBRARY = "libc++"; 721 CLANG_CXX_LIBRARY = "libc++";
704 CLANG_ENABLE_MODULES = YES; 722 CLANG_ENABLE_MODULES = YES;
705 CLANG_ENABLE_OBJC_ARC = YES; 723 CLANG_ENABLE_OBJC_ARC = YES;
706 CLANG_WARN_BOOL_CONVERSION = YES; 724 CLANG_WARN_BOOL_CONVERSION = YES;
707 CLANG_WARN_CONSTANT_CONVERSION = YES; 725 CLANG_WARN_CONSTANT_CONVERSION = YES;
708 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 726 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
709 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 727 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
710 CLANG_WARN_EMPTY_BODY = YES; 728 CLANG_WARN_EMPTY_BODY = YES;
711 CLANG_WARN_ENUM_CONVERSION = YES; 729 CLANG_WARN_ENUM_CONVERSION = YES;
712 CLANG_WARN_INFINITE_RECURSION = YES; 730 CLANG_WARN_INFINITE_RECURSION = YES;
713 CLANG_WARN_INT_CONVERSION = YES; 731 CLANG_WARN_INT_CONVERSION = YES;
714 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 732 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
715 CLANG_WARN_SUSPICIOUS_MOVE = YES; 733 CLANG_WARN_SUSPICIOUS_MOVE = YES;
716 CLANG_WARN_UNREACHABLE_CODE = YES; 734 CLANG_WARN_UNREACHABLE_CODE = YES;
717 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 735 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
718 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 736 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
719 COPY_PHASE_STRIP = NO; 737 COPY_PHASE_STRIP = NO;
720 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 738 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
721 ENABLE_NS_ASSERTIONS = NO; 739 ENABLE_NS_ASSERTIONS = NO;
722 ENABLE_STRICT_OBJC_MSGSEND = YES; 740 ENABLE_STRICT_OBJC_MSGSEND = YES;
723 GCC_C_LANGUAGE_STANDARD = gnu99; 741 GCC_C_LANGUAGE_STANDARD = gnu99;
724 GCC_NO_COMMON_BLOCKS = YES; 742 GCC_NO_COMMON_BLOCKS = YES;
725 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 743 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
726 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 744 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
727 GCC_WARN_UNDECLARED_SELECTOR = YES; 745 GCC_WARN_UNDECLARED_SELECTOR = YES;
728 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 746 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
729 GCC_WARN_UNUSED_FUNCTION = YES; 747 GCC_WARN_UNUSED_FUNCTION = YES;
730 GCC_WARN_UNUSED_VARIABLE = YES; 748 GCC_WARN_UNUSED_VARIABLE = YES;
731 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 749 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
732 MTL_ENABLE_DEBUG_INFO = NO; 750 MTL_ENABLE_DEBUG_INFO = NO;
733 SDKROOT = iphoneos; 751 SDKROOT = iphoneos;
734 TARGETED_DEVICE_FAMILY = "1,2"; 752 TARGETED_DEVICE_FAMILY = "1,2";
735 VALIDATE_PRODUCT = YES; 753 VALIDATE_PRODUCT = YES;
736 }; 754 };
737 name = Release; 755 name = Release;
738 }; 756 };
739 6E84E39F1F27A703001EB88E /* Debug */ = { 757 6E84E39F1F27A703001EB88E /* Debug */ = {
740 isa = XCBuildConfiguration; 758 isa = XCBuildConfiguration;
741 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */; 759 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */;
742 buildSettings = { 760 buildSettings = {
743 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 761 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
744 DEVELOPMENT_TEAM = UXU4V3VUN4; 762 DEVELOPMENT_TEAM = UXU4V3VUN4;
745 INFOPLIST_FILE = LifeLog/Info.plist; 763 INFOPLIST_FILE = LifeLog/Info.plist;
746 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 764 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
747 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 765 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
748 OTHER_LDFLAGS = ( 766 OTHER_LDFLAGS = (
749 "$(inherited)", 767 "$(inherited)",
750 "-framework", 768 "-framework",
751 "\"CircleProgressBar\"", 769 "\"CircleProgressBar\"",
752 "-all_load", 770 "-all_load",
753 ); 771 );
754 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 772 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
755 PRODUCT_NAME = "$(TARGET_NAME)"; 773 PRODUCT_NAME = "$(TARGET_NAME)";
756 PROVISIONING_PROFILE = "556082e4-d9c1-4ce1-bab1-13515289a7fd"; 774 PROVISIONING_PROFILE = "556082e4-d9c1-4ce1-bab1-13515289a7fd";
757 PROVISIONING_PROFILE_SPECIFIER = Lifelog_Development; 775 PROVISIONING_PROFILE_SPECIFIER = Lifelog_Development;
758 }; 776 };
759 name = Debug; 777 name = Debug;
760 }; 778 };
761 6E84E3A01F27A703001EB88E /* Release */ = { 779 6E84E3A01F27A703001EB88E /* Release */ = {
762 isa = XCBuildConfiguration; 780 isa = XCBuildConfiguration;
763 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */; 781 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */;
764 buildSettings = { 782 buildSettings = {
765 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 783 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
766 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; 784 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
767 DEVELOPMENT_TEAM = UXU4V3VUN4; 785 DEVELOPMENT_TEAM = UXU4V3VUN4;
768 INFOPLIST_FILE = LifeLog/Info.plist; 786 INFOPLIST_FILE = LifeLog/Info.plist;
769 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 787 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
770 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 788 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
771 OTHER_LDFLAGS = ( 789 OTHER_LDFLAGS = (
772 "$(inherited)", 790 "$(inherited)",
773 "-framework", 791 "-framework",
774 "\"CircleProgressBar\"", 792 "\"CircleProgressBar\"",
775 "-all_load", 793 "-all_load",
776 ); 794 );
777 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 795 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
778 PRODUCT_NAME = "$(TARGET_NAME)"; 796 PRODUCT_NAME = "$(TARGET_NAME)";
779 PROVISIONING_PROFILE = "ffe70c33-5b08-4c2e-b96d-4e1bcb971ccb"; 797 PROVISIONING_PROFILE = "ffe70c33-5b08-4c2e-b96d-4e1bcb971ccb";
780 PROVISIONING_PROFILE_SPECIFIER = Lifelog_Distribution; 798 PROVISIONING_PROFILE_SPECIFIER = Lifelog_Distribution;
781 }; 799 };
782 name = Release; 800 name = Release;
783 }; 801 };
784 6E84E3A21F27A703001EB88E /* Debug */ = { 802 6E84E3A21F27A703001EB88E /* Debug */ = {
785 isa = XCBuildConfiguration; 803 isa = XCBuildConfiguration;
786 buildSettings = { 804 buildSettings = {
787 BUNDLE_LOADER = "$(TEST_HOST)"; 805 BUNDLE_LOADER = "$(TEST_HOST)";
788 INFOPLIST_FILE = LifeLogTests/Info.plist; 806 INFOPLIST_FILE = LifeLogTests/Info.plist;
789 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 807 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
790 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 808 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
791 PRODUCT_NAME = "$(TARGET_NAME)"; 809 PRODUCT_NAME = "$(TARGET_NAME)";
792 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 810 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
793 }; 811 };
794 name = Debug; 812 name = Debug;
795 }; 813 };
796 6E84E3A31F27A703001EB88E /* Release */ = { 814 6E84E3A31F27A703001EB88E /* Release */ = {
797 isa = XCBuildConfiguration; 815 isa = XCBuildConfiguration;
798 buildSettings = { 816 buildSettings = {
799 BUNDLE_LOADER = "$(TEST_HOST)"; 817 BUNDLE_LOADER = "$(TEST_HOST)";
800 INFOPLIST_FILE = LifeLogTests/Info.plist; 818 INFOPLIST_FILE = LifeLogTests/Info.plist;
801 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 819 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
802 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 820 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
803 PRODUCT_NAME = "$(TARGET_NAME)"; 821 PRODUCT_NAME = "$(TARGET_NAME)";
804 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 822 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
805 }; 823 };
806 name = Release; 824 name = Release;
807 }; 825 };
808 6E84E3A51F27A703001EB88E /* Debug */ = { 826 6E84E3A51F27A703001EB88E /* Debug */ = {
809 isa = XCBuildConfiguration; 827 isa = XCBuildConfiguration;
810 buildSettings = { 828 buildSettings = {
811 INFOPLIST_FILE = LifeLogUITests/Info.plist; 829 INFOPLIST_FILE = LifeLogUITests/Info.plist;
812 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 830 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
813 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 831 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
814 PRODUCT_NAME = "$(TARGET_NAME)"; 832 PRODUCT_NAME = "$(TARGET_NAME)";
815 TEST_TARGET_NAME = LifeLog; 833 TEST_TARGET_NAME = LifeLog;
816 }; 834 };
817 name = Debug; 835 name = Debug;
818 }; 836 };
819 6E84E3A61F27A703001EB88E /* Release */ = { 837 6E84E3A61F27A703001EB88E /* Release */ = {
820 isa = XCBuildConfiguration; 838 isa = XCBuildConfiguration;
821 buildSettings = { 839 buildSettings = {
822 INFOPLIST_FILE = LifeLogUITests/Info.plist; 840 INFOPLIST_FILE = LifeLogUITests/Info.plist;
823 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 841 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
824 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 842 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
825 PRODUCT_NAME = "$(TARGET_NAME)"; 843 PRODUCT_NAME = "$(TARGET_NAME)";
826 TEST_TARGET_NAME = LifeLog; 844 TEST_TARGET_NAME = LifeLog;
827 }; 845 };
828 name = Release; 846 name = Release;
829 }; 847 };
830 /* End XCBuildConfiguration section */ 848 /* End XCBuildConfiguration section */
831 849
832 /* Begin XCConfigurationList section */ 850 /* Begin XCConfigurationList section */
833 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = { 851 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = {
834 isa = XCConfigurationList; 852 isa = XCConfigurationList;
835 buildConfigurations = ( 853 buildConfigurations = (
836 6E84E39C1F27A703001EB88E /* Debug */, 854 6E84E39C1F27A703001EB88E /* Debug */,
837 6E84E39D1F27A703001EB88E /* Release */, 855 6E84E39D1F27A703001EB88E /* Release */,
838 ); 856 );
839 defaultConfigurationIsVisible = 0; 857 defaultConfigurationIsVisible = 0;
840 defaultConfigurationName = Release; 858 defaultConfigurationName = Release;
841 }; 859 };
842 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = { 860 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = {
843 isa = XCConfigurationList; 861 isa = XCConfigurationList;
844 buildConfigurations = ( 862 buildConfigurations = (
845 6E84E39F1F27A703001EB88E /* Debug */, 863 6E84E39F1F27A703001EB88E /* Debug */,
846 6E84E3A01F27A703001EB88E /* Release */, 864 6E84E3A01F27A703001EB88E /* Release */,
847 ); 865 );
848 defaultConfigurationIsVisible = 0; 866 defaultConfigurationIsVisible = 0;
849 defaultConfigurationName = Release; 867 defaultConfigurationName = Release;
850 }; 868 };
851 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = { 869 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = {
852 isa = XCConfigurationList; 870 isa = XCConfigurationList;
853 buildConfigurations = ( 871 buildConfigurations = (
854 6E84E3A21F27A703001EB88E /* Debug */, 872 6E84E3A21F27A703001EB88E /* Debug */,
855 6E84E3A31F27A703001EB88E /* Release */, 873 6E84E3A31F27A703001EB88E /* Release */,
856 ); 874 );
857 defaultConfigurationIsVisible = 0; 875 defaultConfigurationIsVisible = 0;
858 defaultConfigurationName = Release; 876 defaultConfigurationName = Release;
859 }; 877 };
860 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = { 878 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = {
861 isa = XCConfigurationList; 879 isa = XCConfigurationList;
862 buildConfigurations = ( 880 buildConfigurations = (
863 6E84E3A51F27A703001EB88E /* Debug */, 881 6E84E3A51F27A703001EB88E /* Debug */,
864 6E84E3A61F27A703001EB88E /* Release */, 882 6E84E3A61F27A703001EB88E /* Release */,
865 ); 883 );
866 defaultConfigurationIsVisible = 0; 884 defaultConfigurationIsVisible = 0;
867 defaultConfigurationName = Release; 885 defaultConfigurationName = Release;
868 }; 886 };
869 /* End XCConfigurationList section */ 887 /* End XCConfigurationList section */
870 }; 888 };
871 rootObject = 6E84E3691F27A700001EB88E /* Project object */; 889 rootObject = 6E84E3691F27A700001EB88E /* Project object */;
872 } 890 }
873 891
LifeLog/LifeLog/LoginViewController.m
1 // 1 //
2 // LoginViewController.m 2 // LoginViewController.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "LoginViewController.h" 9 #import "LoginViewController.h"
10 #import "ServerAPI.h" 10 #import "ServerAPI.h"
11 #import "AppDelegate.h" 11 #import "AppDelegate.h"
12 #import "RegisterViewController.h" 12 #import "RegisterViewController.h"
13 #import "Utilities.h"
14 #import "ConfirmForgetPassViewController.h"
13 15
14 @interface LoginViewController () 16 @interface LoginViewController ()
15 @property (nonatomic, weak) IBOutlet UILabel *lblEmail; 17 @property (nonatomic, weak) IBOutlet UILabel *lblEmail;
16 @property (nonatomic, weak) IBOutlet UILabel *lblPassword; 18 @property (nonatomic, weak) IBOutlet UILabel *lblPassword;
17 @property (nonatomic, weak) IBOutlet UILabel *lblRegister; 19 @property (nonatomic, weak) IBOutlet UILabel *lblRegister;
18 @property (nonatomic, weak) IBOutlet UITextField *tfEmail; 20 @property (nonatomic, weak) IBOutlet UITextField *tfEmail;
19 @property (nonatomic, weak) IBOutlet UITextField *tfPassword; 21 @property (nonatomic, weak) IBOutlet UITextField *tfPassword;
20 @property (nonatomic, weak) IBOutlet UIButton *btnLogin; 22 @property (nonatomic, weak) IBOutlet UIButton *btnLogin;
21 @property (nonatomic, weak) IBOutlet UIButton *btnRegist; 23 @property (nonatomic, weak) IBOutlet UIButton *btnRegist;
22 @property (nonatomic, weak) IBOutlet UIButton *btnForget; 24 @property (nonatomic, weak) IBOutlet UIButton *btnForget;
23 @end 25 @end
24 26
25 @implementation LoginViewController 27 @implementation LoginViewController
26 28
27 - (void)viewDidLoad { 29 - (void)viewDidLoad {
28 [super viewDidLoad]; 30 [super viewDidLoad];
29 // Do any additional setup after loading the view from its nib. 31 // Do any additional setup after loading the view from its nib.
30 self.title = NSLocalizedString(@"lifelog.login.title", nil); 32 self.title = NSLocalizedString(@"lifelog.login.title", nil);
31 33
32 self.lblEmail.text = NSLocalizedString(@"lifelog.common.email", nil); 34 self.lblEmail.text = NSLocalizedString(@"lifelog.common.email", nil);
33 self.lblPassword.text = NSLocalizedString(@"lifelog.common.password", nil); 35 self.lblPassword.text = NSLocalizedString(@"lifelog.common.password", nil);
34 self.lblRegister.text = NSLocalizedString(@"lifelog.login.label.register", nil); 36 self.lblRegister.text = NSLocalizedString(@"lifelog.login.label.register", nil);
35 37
36 [self.btnLogin setTitle:NSLocalizedString(@"lifelog.login.button.login", nil) forState:UIControlStateNormal]; 38 [self.btnLogin setTitle:NSLocalizedString(@"lifelog.login.button.login", nil) forState:UIControlStateNormal];
37 [self.btnRegist setTitle:NSLocalizedString(@"lifelog.login.button.register", nil) forState:UIControlStateNormal]; 39 [self.btnRegist setTitle:NSLocalizedString(@"lifelog.login.button.register", nil) forState:UIControlStateNormal];
38 40
39 NSMutableAttributedString *forgetString = [[NSMutableAttributedString alloc] initWithString:NSLocalizedString(@"lifelog.login.forget.password", nil)]; 41 NSMutableAttributedString *forgetString = [[NSMutableAttributedString alloc] initWithString:NSLocalizedString(@"lifelog.login.forget.password", nil)];
40 [forgetString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, [forgetString length])]; 42 [forgetString addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, [forgetString length])];
41 // Or for adding Colored text use---------- 43 // Or for adding Colored text use----------
42 UIColor* textColor = [UIColor blueColor]; 44 UIColor* textColor = [UIColor blueColor];
43 [forgetString setAttributes:@{NSForegroundColorAttributeName:textColor,NSUnderlineStyleAttributeName:[NSNumber numberWithInteger:NSUnderlineStyleSingle]} range:NSMakeRange(0,[forgetString length])]; 45 [forgetString setAttributes:@{NSForegroundColorAttributeName:textColor,NSUnderlineStyleAttributeName:[NSNumber numberWithInteger:NSUnderlineStyleSingle]} range:NSMakeRange(0,[forgetString length])];
44 // Or for adding Colored text use---------- 46 // Or for adding Colored text use----------
45 [_btnForget setAttributedTitle:forgetString forState:UIControlStateNormal]; 47 [_btnForget setAttributedTitle:forgetString forState:UIControlStateNormal];
46 48
47 self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"lifelog.common.back", nil) style:UIBarButtonItemStylePlain target:nil action:nil]; 49 self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"lifelog.common.back", nil) style:UIBarButtonItemStylePlain target:nil action:nil];
48 } 50 }
49 51
50 - (void)didReceiveMemoryWarning { 52 - (void)didReceiveMemoryWarning {
51 [super didReceiveMemoryWarning]; 53 [super didReceiveMemoryWarning];
52 // Dispose of any resources that can be recreated. 54 // Dispose of any resources that can be recreated.
53 } 55 }
54 56
55 - (IBAction)buttonLoginTouchUpInside:(id)sender { 57 - (IBAction)buttonLoginTouchUpInside:(id)sender {
56 LoginViewController __weak *weakSelf = self; 58 LoginViewController __weak *weakSelf = self;
57 [[ServerAPI server] loginWithEmail:_tfEmail.text Password:_tfPassword.text CompletionHandler:^(User *user, NSString *token, NSError *error) { 59 [[ServerAPI server] loginWithEmail:_tfEmail.text Password:_tfPassword.text CompletionHandler:^(User *user, NSString *token, NSError *error) {
58 if (error == nil) { 60 if (error == nil) {
59 // save user and goto MainMenu 61 // save user and goto MainMenu
60 dispatch_async(dispatch_get_main_queue(), ^{ 62 dispatch_async(dispatch_get_main_queue(), ^{
61 [[AppDelegate sharedAppDelegate] gotoMainMenu]; 63 [[AppDelegate sharedAppDelegate] gotoMainMenu];
62 }); 64 });
63 } 65 }
64 else { 66 else {
65 dispatch_async(dispatch_get_main_queue(), ^{ 67 dispatch_async(dispatch_get_main_queue(), ^{
66 NSString *message = [error.userInfo objectForKey:@"message"]; 68 NSString *message = [error.userInfo objectForKey:@"message"];
67 if (message.length > 0) { 69 [Utilities showErrorMessage:message withViewController:weakSelf];
68 UIAlertController * alert= [UIAlertController
69 alertControllerWithTitle:@"Error"
70 message:message
71 preferredStyle:UIAlertControllerStyleAlert];
72
73 UIAlertAction* ok = [UIAlertAction
74 actionWithTitle:@"OK"
75 style:UIAlertActionStyleDefault
76 handler:^(UIAlertAction * action)
77 {
78 [alert dismissViewControllerAnimated:YES completion:nil];
79
80 }];
81
82 [alert addAction:ok];
83
84 [weakSelf presentViewController:alert animated:YES completion:nil];
85 }
86 }); 70 });
87 } 71 }
88 }]; 72 }];
89 } 73 }
90 74
91 - (IBAction)buttonForgetTouchUpInside:(id)sender { 75 - (IBAction)buttonForgetTouchUpInside:(id)sender {
76 if (_tfEmail.text.length > 0) {
77 LoginViewController __weak *weakSelf = self;
78 [[ServerAPI server] forgetPass:_tfEmail.text CompletionHandler:^(NSError *error) {
79 if (error == nil) {
80 // goto screen confirm forgetPass
81 dispatch_async(dispatch_get_main_queue(), ^{
82 ConfirmForgetPassViewController *confirmVC = [[ConfirmForgetPassViewController alloc] initWithNibName:@"ConfirmForgetPassViewController" bundle:nil];
83 confirmVC.email = weakSelf.tfEmail.text;
84 [weakSelf.navigationController pushViewController:confirmVC animated:YES];
85 });
86 }
87 else {
88 dispatch_async(dispatch_get_main_queue(), ^{
LifeLog/LifeLog/RegisterViewController.m
1 // 1 //
2 // RegisterViewController.m 2 // RegisterViewController.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Panasonic R&D Center Vietnam on 7/31/17. 5 // Created by Panasonic R&D Center Vietnam on 7/31/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "RegisterViewController.h" 9 #import "RegisterViewController.h"
10 #import "CustomTextField.h" 10 #import "CustomTextField.h"
11 #import "Utilities.h" 11 #import "Utilities.h"
12 #import "NSDate+helper.h" 12 #import "NSDate+helper.h"
13 #import "ServerAPI.h" 13 #import "ServerAPI.h"
14 #import "AppDelegate.h" 14 #import "AppDelegate.h"
15 static int const kPickerTagArea = 1; 15 static int const kPickerTagArea = 1;
16 static int const kPickerTagSex = 2; 16 static int const kPickerTagSex = 2;
17 17
18 @interface RegisterViewController ()<UIActionSheetDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate, UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate> 18 @interface RegisterViewController ()<UIActionSheetDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate, UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate>
19 { 19 {
20 NSInteger indexArea; 20 NSInteger indexArea;
21 UIPickerView *pickerArea; 21 UIPickerView *pickerArea;
22 22
23 UIPickerView *pickerSex; 23 UIPickerView *pickerSex;
24 UIDatePicker *pickerDate; 24 UIDatePicker *pickerDate;
25 NSDate *dateBirthDay; 25 NSDate *dateBirthDay;
26 NSString *profile_image; 26 NSString *profile_image;
27 } 27 }
28 @property (nonatomic, weak) IBOutlet UIImageView *avatar; 28 @property (nonatomic, weak) IBOutlet UIImageView *avatar;
29 29
30 @property (nonatomic, weak) IBOutlet UILabel *lblUsername; 30 @property (nonatomic, weak) IBOutlet UILabel *lblUsername;
31 @property (nonatomic, weak) IBOutlet UILabel *lblName; 31 @property (nonatomic, weak) IBOutlet UILabel *lblName;
32 @property (nonatomic, weak) IBOutlet UILabel *lblNickname; 32 @property (nonatomic, weak) IBOutlet UILabel *lblNickname;
33 @property (nonatomic, weak) IBOutlet UILabel *lblEmail; 33 @property (nonatomic, weak) IBOutlet UILabel *lblEmail;
34 @property (nonatomic, weak) IBOutlet UILabel *lblPassword; 34 @property (nonatomic, weak) IBOutlet UILabel *lblPassword;
35 @property (nonatomic, weak) IBOutlet UILabel *lblConfirmPassword; 35 @property (nonatomic, weak) IBOutlet UILabel *lblConfirmPassword;
36 @property (nonatomic, weak) IBOutlet UILabel *lblSex; 36 @property (nonatomic, weak) IBOutlet UILabel *lblSex;
37 @property (nonatomic, weak) IBOutlet UILabel *lblBirthday; 37 @property (nonatomic, weak) IBOutlet UILabel *lblBirthday;
38 @property (nonatomic, weak) IBOutlet UILabel *lblHeight; 38 @property (nonatomic, weak) IBOutlet UILabel *lblHeight;
39 @property (nonatomic, weak) IBOutlet UILabel *lblHeightUnit; 39 @property (nonatomic, weak) IBOutlet UILabel *lblHeightUnit;
40 @property (nonatomic, weak) IBOutlet UILabel *lblWeight; 40 @property (nonatomic, weak) IBOutlet UILabel *lblWeight;
41 @property (nonatomic, weak) IBOutlet UILabel *lblWeightUnit; 41 @property (nonatomic, weak) IBOutlet UILabel *lblWeightUnit;
42 @property (nonatomic, weak) IBOutlet UILabel *lblFatPercentage; 42 @property (nonatomic, weak) IBOutlet UILabel *lblFatPercentage;
43 @property (nonatomic, weak) IBOutlet UILabel *lblFatPercentageUnit; 43 @property (nonatomic, weak) IBOutlet UILabel *lblFatPercentageUnit;
44 @property (nonatomic, weak) IBOutlet UILabel *lblPhysicalActivity; 44 @property (nonatomic, weak) IBOutlet UILabel *lblPhysicalActivity;
45 @property (nonatomic, weak) IBOutlet UILabel *lblArea; 45 @property (nonatomic, weak) IBOutlet UILabel *lblArea;
46 @property (nonatomic, weak) IBOutlet UILabel *lblNote; 46 @property (nonatomic, weak) IBOutlet UILabel *lblNote;
47 47
48 @property (nonatomic, weak) IBOutlet UITextField *tfUsername; 48 @property (nonatomic, weak) IBOutlet UITextField *tfUsername;
49 @property (nonatomic, weak) IBOutlet UITextField *tfName; 49 @property (nonatomic, weak) IBOutlet UITextField *tfName;
50 @property (nonatomic, weak) IBOutlet UITextField *tfNickname; 50 @property (nonatomic, weak) IBOutlet UITextField *tfNickname;
51 @property (nonatomic, weak) IBOutlet UITextField *tfEmail; 51 @property (nonatomic, weak) IBOutlet UITextField *tfEmail;
52 @property (nonatomic, weak) IBOutlet UITextField *tfPassword; 52 @property (nonatomic, weak) IBOutlet UITextField *tfPassword;
53 @property (nonatomic, weak) IBOutlet UITextField *tfConfirmPassword; 53 @property (nonatomic, weak) IBOutlet UITextField *tfConfirmPassword;
54 @property (nonatomic, weak) IBOutlet UITextField *tflblSex; 54 @property (nonatomic, weak) IBOutlet UITextField *tflblSex;
55 @property (nonatomic, weak) IBOutlet UITextField *tfBirthday; 55 @property (nonatomic, weak) IBOutlet UITextField *tfBirthday;
56 @property (nonatomic, weak) IBOutlet UITextField *tfHeight; 56 @property (nonatomic, weak) IBOutlet UITextField *tfHeight;
57 @property (nonatomic, weak) IBOutlet UITextField *tfWeight; 57 @property (nonatomic, weak) IBOutlet UITextField *tfWeight;
58 @property (nonatomic, weak) IBOutlet UITextField *tfFatPercentage; 58 @property (nonatomic, weak) IBOutlet UITextField *tfFatPercentage;
59 @property (nonatomic, weak) IBOutlet UISegmentedControl *physicalActivity; 59 @property (nonatomic, weak) IBOutlet UISegmentedControl *physicalActivity;
60 @property (nonatomic, weak) IBOutlet CustomTextField *tfArea; 60 @property (nonatomic, weak) IBOutlet CustomTextField *tfArea;
61 @property (nonatomic, weak) IBOutlet UITextView *tvNote; 61 @property (nonatomic, weak) IBOutlet UITextView *tvNote;
62 62
63 @property (nonatomic, weak) IBOutlet UIToolbar *toolBar; 63 @property (nonatomic, weak) IBOutlet UIToolbar *toolBar;
64 @property (nonatomic, strong) NSArray *arrayArea; 64 @property (nonatomic, strong) NSArray *arrayArea;
65 @property (nonatomic, strong) NSArray *arraySex; 65 @property (nonatomic, strong) NSArray *arraySex;
66 66
67 @property (nonatomic) UIImagePickerController *imagePickerController; 67 @property (nonatomic) UIImagePickerController *imagePickerController;
68 68
69 @end 69 @end
70 70
71 @implementation RegisterViewController 71 @implementation RegisterViewController
72 72
73 - (void)viewDidLoad { 73 - (void)viewDidLoad {
74 [super viewDidLoad]; 74 [super viewDidLoad];
75 [self setupUIRegister]; 75 [self setupUIRegister];
76 76
77 _arrayArea = [[NSArray alloc] initWithObjects:@"北海道", @"青森県", @"岩手県", @"宮城県", @"秋田県", @"山形県", @"福島県", @"茨城県", @"栃木県", @"群馬県", @"埼玉県", @"千葉県", @"東京都", @"神奈川県", @"新潟県", @"富山県", @"石川県", @"福井県", @"山梨県", @"長野県", @"岐阜県", @"静岡県", @"愛知県", @"三重県", @"滋賀県", @"京都府", @"大阪府", @"兵庫県", @"奈良県", @"和歌山県", @"鳥取県", @"島根県", @"岡山県", @"広島県", @"山口県", @"徳島県", @"香川県", @"愛媛県", @"高知県", @"福岡県", @"佐賀県", @"長崎県", @"熊本県", @"大分県" , @"宮崎県", @"鹿児島県", @"沖縄県", nil]; 77 _arrayArea = [[NSArray alloc] initWithObjects:@"北海道", @"青森県", @"岩手県", @"宮城県", @"秋田県", @"山形県", @"福島県", @"茨城県", @"栃木県", @"群馬県", @"埼玉県", @"千葉県", @"東京都", @"神奈川県", @"新潟県", @"富山県", @"石川県", @"福井県", @"山梨県", @"長野県", @"岐阜県", @"静岡県", @"愛知県", @"三重県", @"滋賀県", @"京都府", @"大阪府", @"兵庫県", @"奈良県", @"和歌山県", @"鳥取県", @"島根県", @"岡山県", @"広島県", @"山口県", @"徳島県", @"香川県", @"愛媛県", @"高知県", @"福岡県", @"佐賀県", @"長崎県", @"熊本県", @"大分県" , @"宮崎県", @"鹿児島県", @"沖縄県", nil];
78 _arraySex = [[NSArray alloc] initWithObjects:@"男", @"女", nil]; 78 _arraySex = [[NSArray alloc] initWithObjects:@"男", @"女", nil];
79 79
80 pickerArea = [[UIPickerView alloc] init]; 80 pickerArea = [[UIPickerView alloc] init];
81 pickerArea.dataSource = self; 81 pickerArea.dataSource = self;
82 pickerArea.delegate = self; 82 pickerArea.delegate = self;
83 pickerArea.showsSelectionIndicator = YES; 83 pickerArea.showsSelectionIndicator = YES;
84 pickerArea.tag = kPickerTagArea; 84 pickerArea.tag = kPickerTagArea;
85 pickerArea.backgroundColor = [Utilities convertHecToColor:0x618DB6]; 85 pickerArea.backgroundColor = [Utilities convertHecToColor:0x618DB6];
86 86
87 _tfArea.inputAccessoryView = _toolBar; 87 _tfArea.inputAccessoryView = _toolBar;
88 _tfArea.inputView = pickerArea; 88 _tfArea.inputView = pickerArea;
89 //_tfArea.alpha = 0.5; 89 //_tfArea.alpha = 0.5;
90 _tfArea.delegate = self; 90 _tfArea.delegate = self;
91 91
92 pickerSex = [[UIPickerView alloc] init]; 92 pickerSex = [[UIPickerView alloc] init];
93 pickerSex.dataSource = self; 93 pickerSex.dataSource = self;
94 pickerSex.delegate = self; 94 pickerSex.delegate = self;
95 pickerSex.showsSelectionIndicator = YES; 95 pickerSex.showsSelectionIndicator = YES;
96 pickerSex.tag = kPickerTagSex; 96 pickerSex.tag = kPickerTagSex;
97 pickerSex.backgroundColor = [Utilities convertHecToColor:0x618DB6]; 97 pickerSex.backgroundColor = [Utilities convertHecToColor:0x618DB6];
98 98
99 _tflblSex.inputAccessoryView = _toolBar; 99 _tflblSex.inputAccessoryView = _toolBar;
100 _tflblSex.inputView = pickerSex; 100 _tflblSex.inputView = pickerSex;
101 //_tflblSex.alpha = 0.5; 101 //_tflblSex.alpha = 0.5;
102 _tflblSex.delegate = self; 102 _tflblSex.delegate = self;
103 103
104 pickerDate = [[UIDatePicker alloc] init]; 104 pickerDate = [[UIDatePicker alloc] init];
105 pickerDate.backgroundColor = [Utilities convertHecToColor:0x618DB6]; 105 pickerDate.backgroundColor = [Utilities convertHecToColor:0x618DB6];
106 pickerDate.datePickerMode = UIDatePickerModeDate; 106 pickerDate.datePickerMode = UIDatePickerModeDate;
107 _tfBirthday.inputAccessoryView = _toolBar; 107 _tfBirthday.inputAccessoryView = _toolBar;
108 _tfBirthday.inputView = pickerDate; 108 _tfBirthday.inputView = pickerDate;
109 //_tflblSex.alpha = 0.5; 109 //_tflblSex.alpha = 0.5;
110 _tflblSex.delegate = self; 110 _tflblSex.delegate = self;
111 profile_image = @""; 111 profile_image = @"";
112 } 112 }
113 113
114 - (void)didReceiveMemoryWarning { 114 - (void)didReceiveMemoryWarning {
115 [super didReceiveMemoryWarning]; 115 [super didReceiveMemoryWarning];
116 // Dispose of any resources that can be recreated. 116 // Dispose of any resources that can be recreated.
117 } 117 }
118 118
119 - (void)setupUIRegister 119 - (void)setupUIRegister
120 { 120 {
121 self.avatar.backgroundColor = [UIColor whiteColor]; 121 self.avatar.backgroundColor = [UIColor whiteColor];
122 self.avatar.layer.borderWidth = 2.0f; 122 self.avatar.layer.borderWidth = 2.0f;
123 self.avatar.layer.borderColor = [[UIColor whiteColor] CGColor]; 123 self.avatar.layer.borderColor = [[UIColor whiteColor] CGColor];
124 self.avatar.layer.cornerRadius = self.avatar.frame.size.width/2.0f; 124 self.avatar.layer.cornerRadius = self.avatar.frame.size.width/2.0f;
125 self.avatar.layer.masksToBounds = YES; 125 self.avatar.layer.masksToBounds = YES;
126 self.title = NSLocalizedString(@"lifelog.register.title", nil); 126 self.title = NSLocalizedString(@"lifelog.register.title", nil);
127 self.lblUsername.text = NSLocalizedString(@"lifelog.register.username", nil); 127 self.lblUsername.text = NSLocalizedString(@"lifelog.register.username", nil);
128 self.lblName.text = NSLocalizedString(@"lifelog.register.name", nil); 128 self.lblName.text = NSLocalizedString(@"lifelog.register.name", nil);
129 self.lblNickname.text = NSLocalizedString(@"lifelog.register.nickname", nil); 129 self.lblNickname.text = NSLocalizedString(@"lifelog.register.nickname", nil);
130 self.lblEmail.text = NSLocalizedString(@"lifelog.common.email", nil); 130 self.lblEmail.text = NSLocalizedString(@"lifelog.common.email", nil);
131 self.lblPassword.text = NSLocalizedString(@"lifelog.common.password", nil); 131 self.lblPassword.text = NSLocalizedString(@"lifelog.common.password", nil);
132 self.lblConfirmPassword.text = NSLocalizedString(@"lifelog.register.confirmation.password", nil); 132 self.lblConfirmPassword.text = NSLocalizedString(@"lifelog.register.confirmation.password", nil);
133 self.lblSex.text = NSLocalizedString(@"lifelog.register.sex", nil); 133 self.lblSex.text = NSLocalizedString(@"lifelog.register.sex", nil);
134 self.lblBirthday.text = NSLocalizedString(@"lifelog.register.birthday", nil); 134 self.lblBirthday.text = NSLocalizedString(@"lifelog.register.birthday", nil);
135 self.lblHeight.text = NSLocalizedString(@"lifelog.register.height", nil); 135 self.lblHeight.text = NSLocalizedString(@"lifelog.register.height", nil);
136 self.lblHeightUnit.text = NSLocalizedString(@"lifelog.register.height.unit", nil); 136 self.lblHeightUnit.text = NSLocalizedString(@"lifelog.register.height.unit", nil);
137 self.lblWeight.text = NSLocalizedString(@"lifelog.register.weight", nil); 137 self.lblWeight.text = NSLocalizedString(@"lifelog.register.weight", nil);
138 self.lblWeightUnit.text = NSLocalizedString(@"lifelog.register.weight.unit", nil); 138 self.lblWeightUnit.text = NSLocalizedString(@"lifelog.register.weight.unit", nil);
139 self.lblFatPercentage.text = NSLocalizedString(@"lifelog.register.fat.percentage", nil); 139 self.lblFatPercentage.text = NSLocalizedString(@"lifelog.register.fat.percentage", nil);
140 self.lblFatPercentageUnit.text = NSLocalizedString(@"lifelog.register.fat.percentage.unit", nil); 140 self.lblFatPercentageUnit.text = NSLocalizedString(@"lifelog.register.fat.percentage.unit", nil);
141 self.lblPhysicalActivity.text = NSLocalizedString(@"lifelog.register.daily.physical.activity.level", nil); 141 self.lblPhysicalActivity.text = NSLocalizedString(@"lifelog.register.daily.physical.activity.level", nil);
142 self.lblArea.text = NSLocalizedString(@"lifelog.register.area", nil); 142 self.lblArea.text = NSLocalizedString(@"lifelog.register.area", nil);
143 self.lblNote.text = NSLocalizedString(@"lifelog.register.note", nil); 143 self.lblNote.text = NSLocalizedString(@"lifelog.register.note", nil);
144 144
145 UIImage *img1=[UIImage imageNamed:@"icon_right"]; 145 UIImage *img1=[UIImage imageNamed:@"icon_right"];
146 CGRect frameimg1 = CGRectMake(0, 0, img1.size.width, img1.size.height); 146 CGRect frameimg1 = CGRectMake(0, 0, img1.size.width, img1.size.height);
147 UIButton *registButton=[[UIButton alloc]initWithFrame:frameimg1]; 147 UIButton *registButton=[[UIButton alloc]initWithFrame:frameimg1];
148 [registButton setBackgroundImage:img1 forState:UIControlStateNormal]; 148 [registButton setBackgroundImage:img1 forState:UIControlStateNormal];
149 [registButton addTarget:self action:@selector(registButtonPressed:) 149 [registButton addTarget:self action:@selector(registButtonPressed:)
150 forControlEvents:UIControlEventTouchUpInside]; 150 forControlEvents:UIControlEventTouchUpInside];
151 [registButton setShowsTouchWhenHighlighted:YES]; 151 [registButton setShowsTouchWhenHighlighted:YES];
152 UIBarButtonItem *barButton = [[UIBarButtonItem alloc]initWithCustomView:registButton]; 152 UIBarButtonItem *barButton = [[UIBarButtonItem alloc]initWithCustomView:registButton];
153 self.navigationItem.rightBarButtonItem = barButton; 153 self.navigationItem.rightBarButtonItem = barButton;
154 } 154 }
155 155
156 #pragma mark - Actions 156 #pragma mark - Actions
157 - (IBAction)avatarTouchUpInside:(id)sender { 157 - (IBAction)avatarTouchUpInside:(id)sender {
158 UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"Avatar" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Select Camera", @"Select Photo", nil]; 158 UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"Avatar" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Select Camera", @"Select Photo", nil];
159 [action showInView:self.view]; 159 [action showInView:self.view];
160 } 160 }
161 161
162 - (IBAction)registButtonPressed:(id)sender { 162 - (IBAction)registButtonPressed:(id)sender {
163 NSLog(@"registButtonPressed"); 163 if ([self checkAllowRegister]) {
164 [self registerUser]; 164 [self registerUser];
165 }
165 } 166 }
166 167
167 #pragma mark - UIActionSheetDelegate 168 #pragma mark - UIActionSheetDelegate
168 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 169 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
169 switch (buttonIndex) { 170 switch (buttonIndex) {
170 case 0: 171 case 0:
171 [self showCamera]; 172 [self showCamera];
172 break; 173 break;
173 case 1: 174 case 1:
174 [self showPhoto]; 175 [self showPhoto];
175 break; 176 break;
176 default: 177 default:
177 break; 178 break;
178 } 179 }
179 } 180 }
180 181
181 #pragma mark - UIImagePickerControllerDelegate 182 #pragma mark - UIImagePickerControllerDelegate
182 183
183 // This method is called when an image has been chosen from the library or taken from the camera. 184 // This method is called when an image has been chosen from the library or taken from the camera.
184 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 185 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
185 { 186 {
186 UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage]; 187 UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage];
187 //NSData *imageData = UIImageJPEGRepresentation (image, 0.5); 188 //NSData *imageData = UIImageJPEGRepresentation (image, 0.5);
188 189
189 // My image view is 90x90 190 // My image view is 90x90
190 //UIImage *thumbImage = MyCreateThumbnailImageFromData(imageData, 90); 191 //UIImage *thumbImage = MyCreateThumbnailImageFromData(imageData, 90);
191 UIImage *thumbImage = [self imageWithImage:image scaledToFillSize:CGSizeMake(80, 80)]; 192 UIImage *thumbImage = [self imageWithImage:image scaledToFillSize:CGSizeMake(80, 80)];
192 193
193 self.avatar.image = thumbImage; 194 self.avatar.image = thumbImage;
194 NSData *dataImage = UIImagePNGRepresentation(thumbImage); 195 NSData *dataImage = UIImagePNGRepresentation(thumbImage);
195 RegisterViewController __weak *weakSelf = self; 196 RegisterViewController __weak *weakSelf = self;
196 [[ServerAPI server] uploadImage:nil andImageData:dataImage CompletionHandler:^(NSString *linkImage, NSError *error) { 197 [[ServerAPI server] uploadImage:nil andImageData:dataImage CompletionHandler:^(NSString *linkImage, NSError *error) {
197 if (weakSelf == nil) { 198 if (weakSelf == nil) {
198 return ; 199 return ;
199 } 200 }
200 if (error == nil) { 201 if (error == nil) {
201 profile_image = linkImage; 202 profile_image = linkImage;
202 } 203 }
203 else { 204 else {
204 dispatch_async(dispatch_get_main_queue(), ^{ 205 dispatch_async(dispatch_get_main_queue(), ^{
205 NSString *message = [error.userInfo objectForKey:@"message"]; 206 NSString *message = [error.userInfo objectForKey:@"message"];
206 [weakSelf showErrorMessage:message]; 207 [Utilities showErrorMessage:message withViewController:weakSelf];
207 }); 208 });
208 } 209 }
209 }]; 210 }];
210 // Dismiss the image picker. 211 // Dismiss the image picker.
211 [self dismissViewControllerAnimated:YES completion:nil]; 212 [self dismissViewControllerAnimated:YES completion:nil];
212 _imagePickerController = nil; 213 _imagePickerController = nil;
213 } 214 }
214 215
215 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 216 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
216 { 217 {
217 [self dismissViewControllerAnimated:YES completion:^{ 218 [self dismissViewControllerAnimated:YES completion:^{
218 //.. done dismissing 219 //.. done dismissing
219 }]; 220 }];
220 } 221 }
221 222
222 - (UIImage *)imageWithImage:(UIImage *)image scaledToFillSize:(CGSize)size 223 - (UIImage *)imageWithImage:(UIImage *)image scaledToFillSize:(CGSize)size
223 { 224 {
224 CGFloat scale = MAX(size.width/image.size.width, size.height/image.size.height); 225 CGFloat scale = MAX(size.width/image.size.width, size.height/image.size.height);
225 CGFloat width = image.size.width * scale; 226 CGFloat width = image.size.width * scale;
226 CGFloat height = image.size.height * scale; 227 CGFloat height = image.size.height * scale;
227 CGRect imageRect = CGRectMake((size.width - width)/2.0f, 228 CGRect imageRect = CGRectMake((size.width - width)/2.0f,
228 (size.height - height)/2.0f, 229 (size.height - height)/2.0f,
229 width, 230 width,
230 height); 231 height);
231 232
232 UIGraphicsBeginImageContextWithOptions(size, NO, 0); 233 UIGraphicsBeginImageContextWithOptions(size, NO, 0);
233 [image drawInRect:imageRect]; 234 [image drawInRect:imageRect];
234 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 235 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
235 UIGraphicsEndImageContext(); 236 UIGraphicsEndImageContext();
236 return newImage; 237 return newImage;
237 } 238 }
238 239
239 #pragma mark - Function Private 240 #pragma mark - Function Private
240 - (void)showCamera { 241 - (void)showCamera {
241 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 242 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
242 { 243 {
243 UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 244 UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
244 imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext; 245 imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
245 imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 246 imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
246 imagePickerController.delegate = self; 247 imagePickerController.delegate = self;
247 imagePickerController.modalPresentationStyle = UIModalPresentationFullScreen; 248 imagePickerController.modalPresentationStyle = UIModalPresentationFullScreen;
248 _imagePickerController = imagePickerController; // we need this for later 249 _imagePickerController = imagePickerController; // we need this for later
249 [self presentViewController:self.imagePickerController animated:YES completion:^{ 250 [self presentViewController:self.imagePickerController animated:YES completion:^{
250 //.. done presenting 251 //.. done presenting
251 }]; 252 }];
252 } 253 }
253 } 254 }
254 255
255 - (void)showPhoto { 256 - (void)showPhoto {
256 UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 257 UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
257 imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext; 258 imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
258 imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 259 imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
259 imagePickerController.delegate = self; 260 imagePickerController.delegate = self;
260 imagePickerController.modalPresentationStyle = UIModalPresentationPopover; 261 imagePickerController.modalPresentationStyle = UIModalPresentationPopover;
261 _imagePickerController = imagePickerController; // we need this for later 262 _imagePickerController = imagePickerController; // we need this for later
262 [self presentViewController:self.imagePickerController animated:YES completion:^{ 263 [self presentViewController:self.imagePickerController animated:YES completion:^{
263 //.. done presenting 264 //.. done presenting
264 }]; 265 }];
265 } 266 }
266 267
267 - (void)showImagePickerForSourceType:(UIImagePickerControllerSourceType)sourceType fromButton:(UIBarButtonItem *)button 268 - (void)showImagePickerForSourceType:(UIImagePickerControllerSourceType)sourceType fromButton:(UIBarButtonItem *)button
268 { 269 {
269 if (self.avatar.isAnimating) 270 if (self.avatar.isAnimating)
270 { 271 {
271 [self.avatar stopAnimating]; 272 [self.avatar stopAnimating];
272 } 273 }
273 274
274 UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 275 UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
275 imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext; 276 imagePickerController.modalPresentationStyle = UIModalPresentationCurrentContext;
276 imagePickerController.sourceType = sourceType; 277 imagePickerController.sourceType = sourceType;
277 imagePickerController.delegate = self; 278 imagePickerController.delegate = self;
278 imagePickerController.modalPresentationStyle = 279 imagePickerController.modalPresentationStyle =
279 (sourceType == UIImagePickerControllerSourceTypeCamera) ? UIModalPresentationFullScreen : UIModalPresentationPopover; 280 (sourceType == UIImagePickerControllerSourceTypeCamera) ? UIModalPresentationFullScreen : UIModalPresentationPopover;
280 281
281 UIPopoverPresentationController *presentationController = imagePickerController.popoverPresentationController; 282 UIPopoverPresentationController *presentationController = imagePickerController.popoverPresentationController;
282 presentationController.barButtonItem = button; // display popover from the UIBarButtonItem as an anchor 283 presentationController.barButtonItem = button; // display popover from the UIBarButtonItem as an anchor
283 presentationController.permittedArrowDirections = UIPopoverArrowDirectionAny; 284 presentationController.permittedArrowDirections = UIPopoverArrowDirectionAny;
284 285
285 if (sourceType == UIImagePickerControllerSourceTypeCamera) 286 if (sourceType == UIImagePickerControllerSourceTypeCamera)
286 { 287 {
287 // The user wants to use the camera interface. Set up our custom overlay view for the camera. 288 // The user wants to use the camera interface. Set up our custom overlay view for the camera.
288 imagePickerController.showsCameraControls = NO; 289 imagePickerController.showsCameraControls = NO;
289 290
290 /* 291 /*
291 Load the overlay view from the OverlayView nib file. Self is the File's Owner for the nib file, so the overlayView outlet is set to the main view in the nib. Pass that view to the image picker controller to use as its overlay view, and set self's reference to the view to nil. 292 Load the overlay view from the OverlayView nib file. Self is the File's Owner for the nib file, so the overlayView outlet is set to the main view in the nib. Pass that view to the image picker controller to use as its overlay view, and set self's reference to the view to nil.
292 */ 293 */
293 } 294 }
294 295
295 _imagePickerController = imagePickerController; // we need this for later 296 _imagePickerController = imagePickerController; // we need this for later
296 297
297 [self presentViewController:self.imagePickerController animated:YES completion:^{ 298 [self presentViewController:self.imagePickerController animated:YES completion:^{
298 //.. done presenting 299 //.. done presenting
299 }]; 300 }];
300 } 301 }
301 302
302 - (IBAction)donePicker:(id)sender 303 - (IBAction)donePicker:(id)sender
303 { 304 {
304 [_tfArea resignFirstResponder]; 305 [_tfArea resignFirstResponder];
305 [_tflblSex resignFirstResponder]; 306 [_tflblSex resignFirstResponder];
306 if ([_tfBirthday becomeFirstResponder]) { 307 if ([_tfBirthday becomeFirstResponder]) {
307 [_tfBirthday resignFirstResponder]; 308 [_tfBirthday resignFirstResponder];
308 dateBirthDay = pickerDate.date; 309 dateBirthDay = pickerDate.date;
309 _tfBirthday.text = [NSString stringWithFormat:@"%ld%@%ld%@%ld%@", (long)[dateBirthDay getYear], NSLocalizedString(@"lifelog.common.year", nil), (long)[dateBirthDay getMonth], NSLocalizedString(@"lifelog.common.month", nil), (long)[dateBirthDay getDay], NSLocalizedString(@"lifelog.common.day", nil)]; 310 _tfBirthday.text = [NSString stringWithFormat:@"%ld%@%ld%@%ld%@", (long)[dateBirthDay getYear], NSLocalizedString(@"lifelog.common.year", nil), (long)[dateBirthDay getMonth], NSLocalizedString(@"lifelog.common.month", nil), (long)[dateBirthDay getDay], NSLocalizedString(@"lifelog.common.day", nil)];
310 } 311 }
311 } 312 }
312 313
313 #pragma mark - UITextFieldDelegate 314 #pragma mark - UITextFieldDelegate
314 - (void)textFieldDidEndEditing:(UITextField *)textField { 315 - (void)textFieldDidEndEditing:(UITextField *)textField {
315 //if (textField == _tfArea) { 316 //if (textField == _tfArea) {
316 [textField resignFirstResponder]; 317 [textField resignFirstResponder];
317 //} 318 //}
318 } 319 }
319 320
320 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 321 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
321 { 322 {
322 //if (textField == _tfArea) { 323 //if (textField == _tfArea) {
323 [textField resignFirstResponder]; 324 [textField resignFirstResponder];
324 return NO; 325 return NO;
325 //} 326 //}
326 //else { 327 //else {
327 return YES; 328 return YES;
328 //} 329 //}
329 } 330 }
330 331
331 - (BOOL)textFieldShouldReturn:(UITextField *)textField 332 - (BOOL)textFieldShouldReturn:(UITextField *)textField
332 { 333 {
333 [textField resignFirstResponder]; 334 [textField resignFirstResponder];
334 return YES; 335 return YES;
335 } 336 }
336 337
337 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 338 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
338 //if (textField == _tfArea) { 339 //if (textField == _tfArea) {
339 [textField resignFirstResponder]; 340 [textField resignFirstResponder];
340 //} 341 //}
341 return YES; 342 return YES;
342 } 343 }
343 344
344 - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { 345 - (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
345 //if (textField == _tfArea) { 346 //if (textField == _tfArea) {
346 [textField resignFirstResponder]; 347 [textField resignFirstResponder];
347 //} 348 //}
348 return YES; 349 return YES;
349 } 350 }
350 351
351 #pragma mark - UIPickerViewDataSource 352 #pragma mark - UIPickerViewDataSource
352 353
353 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 354 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
354 { 355 {
355 return 1; 356 return 1;
356 } 357 }
357 358
358 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 359 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
359 { 360 {
360 int tag = (int)pickerView.tag; 361 int tag = (int)pickerView.tag;
361 switch (tag) { 362 switch (tag) {
362 case kPickerTagArea: 363 case kPickerTagArea:
363 return _arrayArea.count; 364 return _arrayArea.count;
364 case kPickerTagSex: 365 case kPickerTagSex:
365 return _arraySex.count; 366 return _arraySex.count;
366 default: 367 default:
367 return 0; 368 return 0;
368 } 369 }
369 } 370 }
370 371
371 #pragma mark - UIPickerViewDelegate 372 #pragma mark - UIPickerViewDelegate
372 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 373 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
373 { 374 {
374 int tag = (int)pickerView.tag; 375 int tag = (int)pickerView.tag;
375 switch (tag) { 376 switch (tag) {
376 case kPickerTagArea: 377 case kPickerTagArea:
377 _tfArea.text = [_arrayArea objectAtIndex:row]; 378 _tfArea.text = [_arrayArea objectAtIndex:row];
378 break; 379 break;
379 case kPickerTagSex: 380 case kPickerTagSex:
380 _tflblSex.text = [_arraySex objectAtIndex:row]; 381 _tflblSex.text = [_arraySex objectAtIndex:row];
381 break; 382 break;
382 default: 383 default:
383 break; 384 break;
384 } 385 }
385 } 386 }
386 387
387 - (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component 388 - (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component
388 { 389 {
389 NSString *strTitle = @""; 390 NSString *strTitle = @"";
390 int tag = (int)pickerView.tag; 391 int tag = (int)pickerView.tag;
391 switch (tag) { 392 switch (tag) {
392 case kPickerTagArea: 393 case kPickerTagArea:
393 strTitle = [_arrayArea objectAtIndex:row]; 394 strTitle = [_arrayArea objectAtIndex:row];
394 break; 395 break;
395 case kPickerTagSex: 396 case kPickerTagSex:
396 strTitle = [_arraySex objectAtIndex:row]; 397 strTitle = [_arraySex objectAtIndex:row];
397 break; 398 break;
398 default: 399 default:
399 strTitle = @""; 400 strTitle = @"";
400 break; 401 break;
401 } 402 }
402 NSAttributedString *attString = [[NSAttributedString alloc] initWithString:strTitle attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}]; 403 NSAttributedString *attString = [[NSAttributedString alloc] initWithString:strTitle attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];
403 404
404 return attString; 405 return attString;
405 406
406 } 407 }
407 408
408 - (NSMutableDictionary *)addParam:(NSString *)param value:(NSString *)value withDict:(NSMutableDictionary *)dict 409 - (NSMutableDictionary *)addParam:(NSString *)param value:(NSString *)value withDict:(NSMutableDictionary *)dict
409 { 410 {
410 if (value.length > 0) { 411 if (value.length > 0) {
411 [dict setObject:value forKey:param]; 412 [dict setObject:value forKey:param];
412 } 413 }
413 return dict; 414 return dict;
414 } 415 }
415 416
417 - (BOOL)checkAllowRegister
418 {
419 NSString *message = @"";
420 if (_tfUsername.text.length <= 0) {
421 message = @"Please input username";
422 [Utilities showErrorMessage:message withViewController:self];
423 return NO;
424 }
425 if (_tfName.text.length <= 0) {
426 message = @"Please input full name";
427 [Utilities showErrorMessage:message withViewController:self];
428 return NO;
429 }
430 if (_tfEmail.text.length <= 0) {
431 message = @"Please input email";
432 [Utilities showErrorMessage:message withViewController:self];
433 return NO;
434 }
435 if (_tfPassword.text.length <= 0) {
436 message = @"Please input password";
437 [Utilities showErrorMessage:message withViewController:self];
438 return NO;
439 }
440 if (_tfConfirmPassword.text.length <= 0) {
441 message = @"Please input confirm password";
442 [Utilities showErrorMessage:message withViewController:self];
443 return NO;
444 }
445 if (_tflblSex.text.length <= 0) {
446 message = @"Please input gender";
447 [Utilities showErrorMessage:message withViewController:self];
448 return NO;
449 }
450 if (_tfUsername.text.length > 100) {
451 message = @"Username maximum length 100";
452 [Utilities showErrorMessage:message withViewController:self];
453 return NO;
454 }
455 if (_tfName.text.length > 255) {
456 message = @"Full name maximum length 255";
457 [Utilities showErrorMessage:message withViewController:self];
458 return NO;
459 }
460 if (_tfEmail.text.length > 255) {
461 message = @"Email maximum length 255";
462 [Utilities showErrorMessage:message withViewController:self];
463 return NO;
464 }
465 if (_tfPassword.text.length < 6) {
466 message = @"Password minimum length 6";
467 [Utilities showErrorMessage:message withViewController:self];
468 return NO;
469 }
470 if (![_tfEmail.text containsString:@"@"]) {
471 message = @"Email invalid";
472 [Utilities showErrorMessage:message withViewController:self];
473 return NO;
474 }
475 return YES;
476 }
477
416 - (NSDictionary *)createParamsForRegisterUser { 478 - (NSDictionary *)createParamsForRegisterUser {
417 NSMutableDictionary *dictResutl = [[NSMutableDictionary alloc] init]; 479 NSMutableDictionary *dictResutl = [[NSMutableDictionary alloc] init];
418 dictResutl = [self addParam:@"username" value:_tfUsername.text withDict:dictResutl]; 480 dictResutl = [self addParam:@"username" value:_tfUsername.text withDict:dictResutl];
419 dictResutl = [self addParam:@"full_name" value:_tfName.text withDict:dictResutl]; 481 dictResutl = [self addParam:@"full_name" value:_tfName.text withDict:dictResutl];
420 dictResutl = [self addParam:@"nickname" value:_tfNickname.text withDict:dictResutl]; 482 dictResutl = [self addParam:@"nickname" value:_tfNickname.text withDict:dictResutl];
421 dictResutl = [self addParam:@"email" value:_tfEmail.text withDict:dictResutl]; 483 dictResutl = [self addParam:@"email" value:_tfEmail.text withDict:dictResutl];
422 dictResutl = [self addParam:@"password" value:_tfPassword.text withDict:dictResutl]; 484 dictResutl = [self addParam:@"password" value:_tfPassword.text withDict:dictResutl];
423 //dictResutl = [self addParam:@"confirm_password" value:_tfConfirmPassword.text withDict:dictResutl]; 485 dictResutl = [self addParam:@"password_confirmation" value:_tfConfirmPassword.text withDict:dictResutl];
424 NSString *valueSex = nil; // 0 - 男, 1 - 女 486 // 0 - 男, 1 - 女 // NSString *valueSex = nil;
425 if (_tflblSex.text.length > 0) { 487 if (_tflblSex.text.length > 0) {
426 if ([_tflblSex.text isEqualToString:@"男"]) { 488 if ([_tflblSex.text isEqualToString:@"男"]) {
427 valueSex = @"0"; 489 [dictResutl setValue:[NSNumber numberWithInt:0] forKey:@"gender"];
428 } 490 }
429 else if ([_tflblSex.text isEqualToString:@"女"]) { 491 else if ([_tflblSex.text isEqualToString:@"女"]) {
430 valueSex = @"1"; 492 [dictResutl setValue:[NSNumber numberWithInt:1] forKey:@"gender"];
431 } 493 }
432 } 494 }
433 dictResutl = [self addParam:@"gender" value:valueSex withDict:dictResutl]; 495 //dictResutl = [self addParam:@"gender" value:valueSex withDict:dictResutl];
434 NSString *valueBirthDay = nil; 496 NSString *valueBirthDay = nil;
435 if (_tfBirthday.text.length > 0) { 497 if (_tfBirthday.text.length > 0) {
436 valueBirthDay = [NSString stringWithFormat:@"%ld-%ld-%ld", (long)[dateBirthDay getYear], (long)[dateBirthDay getMonth], (long)[dateBirthDay getDay]]; 498 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
499 [dateFormatter setDateFormat:@"yyyy-MM-dd"];
500 valueBirthDay = [dateFormatter stringFromDate:dateBirthDay];
501 //valueBirthDay = [NSString stringWithFormat:@"%ld-%ld-%ld", (long)[dateBirthDay getYear], (long)[dateBirthDay getMonth], (long)[dateBirthDay getDay]];
502 dictResutl = [self addParam:@"birthday" value:valueBirthDay withDict:dictResutl];
437 } 503 }
438 dictResutl = [self addParam:@"height" value:_tfHeight.text withDict:dictResutl]; 504 dictResutl = [self addParam:@"height" value:_tfHeight.text withDict:dictResutl];
439 dictResutl = [self addParam:@"weight" value:_tfWeight.text withDict:dictResutl]; 505 dictResutl = [self addParam:@"weight" value:_tfWeight.text withDict:dictResutl];
440 dictResutl = [self addParam:@"fat_rate" value:_tfFatPercentage.text withDict:dictResutl]; 506 dictResutl = [self addParam:@"fat_rate" value:_tfFatPercentage.text withDict:dictResutl];
441 NSString *physicalActivityValue = [NSString stringWithFormat:@"%ld", _physicalActivity.selectedSegmentIndex]; 507 NSString *physicalActivityValue = [NSString stringWithFormat:@"%ld", _physicalActivity.selectedSegmentIndex];
442 dictResutl = [self addParam:@"physical_activity" value:physicalActivityValue withDict:dictResutl]; 508 dictResutl = [self addParam:@"physical_activity" value:physicalActivityValue withDict:dictResutl];
443 dictResutl = [self addParam:@"address" value:_tfArea.text withDict:dictResutl]; 509 dictResutl = [self addParam:@"address" value:_tfArea.text withDict:dictResutl];
444 dictResutl = [self addParam:@"description" value:_tvNote.text withDict:dictResutl]; 510 dictResutl = [self addParam:@"description" value:_tvNote.text withDict:dictResutl];
445 if (![profile_image isEqualToString:@""]) { 511 if (![profile_image isEqualToString:@""]) {
446 dictResutl = [self addParam:@"profile_image" value:profile_image withDict:dictResutl]; 512 dictResutl = [self addParam:@"profile_image" value:profile_image withDict:dictResutl];
447 } 513 }
514 // hardcode
515 // require
516 [dictResutl setValue:[NSNumber numberWithInt:0] forKey:@"receive_notification"];
517 // = [self addParam:@"receive_notification" value:@"0" withDict:dictResutl];
518 [dictResutl setValue:[NSNumber numberWithInt:0] forKey:@"share_data"];
519 // dictResutl = [self addParam:@"share_data" value:@"0" withDict:dictResutl];
520
521 // Option
522 //dictResutl = [self addParam:@"phone" value:@"01676582596" withDict:dictResutl];
523 [dictResutl setValue:[NSNumber numberWithInt:0] forKey:@"remember"];
524 //dictResutl = [self addParam:@"remember" value:@"0" withDict:dictResutl];
525
448 return dictResutl; 526 return dictResutl;
449 } 527 }
450 528
451 - (void)registerUser { 529 - (void)registerUser {
452 NSDictionary *paramRegister = [self createParamsForRegisterUser]; 530 NSDictionary *paramRegister = [self createParamsForRegisterUser];
453 RegisterViewController __weak *weakSelf = self; 531 RegisterViewController __weak *weakSelf = self;
454 [[ServerAPI server] registerUserWithParams:paramRegister CompletionHandler:^(NSError *error) { 532 [[ServerAPI server] registerUserWithParams:paramRegister CompletionHandler:^(User *user, NSString *token, NSError *error) {
455 if (weakSelf == nil) { 533 if (weakSelf == nil) {
456 return ; 534 return ;
457 } 535 }
458 if (error == nil) { 536 if (error == nil) {
459 dispatch_async(dispatch_get_main_queue(), ^{ 537 dispatch_async(dispatch_get_main_queue(), ^{
460 [[AppDelegate sharedAppDelegate] gotoMainMenu]; 538 [[AppDelegate sharedAppDelegate] gotoMainMenu];
461 }); 539 });
462 } 540 }
463 else { 541 else {
464 dispatch_async(dispatch_get_main_queue(), ^{ 542 dispatch_async(dispatch_get_main_queue(), ^{
465 NSString *message = [error.userInfo objectForKey:@"message"]; 543 NSString *message = [error.userInfo objectForKey:@"message"];
466 [weakSelf showErrorMessage:message]; 544 [Utilities showErrorMessage:message withViewController:weakSelf];
467 }); 545 });
468 } 546 }
469 }]; 547 }];
470 }
471
472 - (void)showErrorMessage:(NSString *)message
473 {
LifeLog/LifeLog/ServerAPI.h
1 // 1 //
2 // ServerAPI.h 2 // ServerAPI.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import <Foundation/Foundation.h> 9 #import <Foundation/Foundation.h>
10 #import "Entities.h" 10 #import "Entities.h"
11 11
12 @interface ServerAPI : NSObject 12 @interface ServerAPI : NSObject
13 + (instancetype) server; 13 + (instancetype) server;
14 @property (nonatomic, assign) NSTimeInterval timeOutInterval; 14 @property (nonatomic, assign) NSTimeInterval timeOutInterval;
15 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion; 15 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion;
16 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(NSError *)) completion; 16 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion;
17 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion; 17 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion;
18 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion;
19 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion;
18 @end 20 @end
19 21
LifeLog/LifeLog/ServerAPI.m
1 // 1 //
2 // ServerAPI.m 2 // ServerAPI.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "ServerAPI.h" 9 #import "ServerAPI.h"
10 10
11 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/"; 11 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/";
12 12
13 @implementation NSString (NSString_Extended) 13 @implementation NSString (NSString_Extended)
14 - (NSString *)urlencode { 14 - (NSString *)urlencode {
15 NSMutableString *output = [NSMutableString string]; 15 NSMutableString *output = [NSMutableString string];
16 const unsigned char *source = (const unsigned char *)[self UTF8String]; 16 const unsigned char *source = (const unsigned char *)[self UTF8String];
17 int sourceLen = (int)strlen((const char *)source); 17 int sourceLen = (int)strlen((const char *)source);
18 for (int i = 0; i < sourceLen; ++i) { 18 for (int i = 0; i < sourceLen; ++i) {
19 const unsigned char thisChar = source[i]; 19 const unsigned char thisChar = source[i];
20 if (thisChar == ' '){ 20 if (thisChar == ' '){
21 [output appendString:@"+"]; 21 [output appendString:@"+"];
22 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' || 22 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||
23 (thisChar >= 'a' && thisChar <= 'z') || 23 (thisChar >= 'a' && thisChar <= 'z') ||
24 (thisChar >= 'A' && thisChar <= 'Z') || 24 (thisChar >= 'A' && thisChar <= 'Z') ||
25 (thisChar >= '0' && thisChar <= '9')) { 25 (thisChar >= '0' && thisChar <= '9')) {
26 [output appendFormat:@"%c", thisChar]; 26 [output appendFormat:@"%c", thisChar];
27 } else { 27 } else {
28 [output appendFormat:@"%%%02X", thisChar]; 28 [output appendFormat:@"%%%02X", thisChar];
29 } 29 }
30 } 30 }
31 return output; 31 return output;
32 } 32 }
33 @end 33 @end
34 34
35 @implementation ServerAPI 35 @implementation ServerAPI
36 static ServerAPI *_server = nil; 36 static ServerAPI *_server = nil;
37 37
38 @synthesize timeOutInterval = _timeOutInterval; 38 @synthesize timeOutInterval = _timeOutInterval;
39 39
40 + (instancetype)server 40 + (instancetype)server
41 { 41 {
42 @synchronized(self) { 42 @synchronized(self) {
43 if (_server == nil) { 43 if (_server == nil) {
44 _server = [[ServerAPI alloc] init]; 44 _server = [[ServerAPI alloc] init];
45 } 45 }
46 } 46 }
47 return _server; 47 return _server;
48 } 48 }
49 49
50 - (instancetype)init 50 - (instancetype)init
51 { 51 {
52 self = [super init]; 52 self = [super init];
53 if (self != nil) { 53 if (self != nil) {
54 self.timeOutInterval = 150; 54 self.timeOutInterval = 150;
55 } 55 }
56 return self; 56 return self;
57 } 57 }
58 58
59 // Login 59 // Login
60 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion 60 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion
61 { 61 {
62 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) { 62 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) {
63 63
64 if (completion == NULL) { 64 if (completion == NULL) {
65 return ; 65 return ;
66 } 66 }
67 67
68 if (error == nil) 68 if (error == nil)
69 { 69 {
70 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 70 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
71 71
72
73 int status = [dataResult[@"status"] intValue]; 72 int status = [dataResult[@"status"] intValue];
74 if (status == 1) { // status = 1 success 73 if (status == 1) { // status = 1 success
75 NSString *token = dataResult[@"result"][@"token"]; 74 NSString *token = dataResult[@"result"][@"token"];
76 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 75 NSDictionary *dictUser = dataResult[@"result"][@"user"];
77 User *user = [[User alloc] init]; 76 User *user = [[User alloc] init];
78 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 77 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
79 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 78 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
80 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 79 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
81 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 80 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
82 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 81 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
83 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 82 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
84 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 83 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
85 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 84 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
86 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 85 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
87 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 86 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
88 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 87 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
89 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 88 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
90 completion(user, token, nil); 89 completion(user, token, nil);
91 } 90 }
92 else { // status = 0 error 91 else { // status = 0 error
93 NSString *message = dataResult[@"message"]; 92 NSString *message = dataResult[@"message"];
94 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 93 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
95 completion(nil, nil, loginFaild); 94 completion(nil, nil, loginFaild);
96 } 95 }
97 } 96 }
98 else 97 else
99 { 98 {
100 completion(nil, nil, error); 99 completion(nil, nil, error);
101 } 100 }
102 }]; 101 }];
103 } 102 }
104 103
105 // Register 104 // Register
106 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(NSError *)) completion { 105 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion {
107 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" paras:params completion:^(NSData *data, NSError *error) { 106 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" paras:params completion:^(NSData *data, NSError *error) {
108 107
109 if (completion == NULL) { 108 if (completion == NULL) {
110 return ; 109 return ;
111 } 110 }
112 111
113 if (error == nil) 112 if (error == nil)
114 { 113 {
115 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 114 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
116 completion(nil); 115
117 /* 116 int status = [dataResult[@"status"] intValue];
117 if (status == 1) { // status = 1 success
118 NSString *token = dataResult[@"result"][@"token"];
119 NSDictionary *dictUser = dataResult[@"result"][@"user"];
120 User *user = [[User alloc] init];
121 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
122 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
123 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
124 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
125 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
126 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
127 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
128 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
129 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
130 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
131 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
132 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
133 completion(user, token, nil);
134 }
135 else { // status = 0 error
136 NSString *message = dataResult[@"message"];
137 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
138 completion(nil, nil, loginFaild);
139 }
140 }
141 else
142 {
143 completion(nil, nil, error);
144 }
145 }];
146 }
147
148 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion {
149 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" paras:@{@"email":email} completion:^(NSData *data, NSError *error) {
150
151 if (completion == NULL) {
152 return ;
153 }
154
155 if (error == nil)
156 {
118 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 157 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
119 if (dataResult == nil) { 158
159 int status = [dataResult[@"status"] intValue];
160 if (status == 1) { // status = 1 success
120 completion(nil); 161 completion(nil);
121 } 162 }
122 163 else { // status = 0 error
164 NSString *message = dataResult[@"message"];
165 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
166 completion(forgetPass);
167 }
168 }
169 else
170 {
171 completion(error);
172 }
173 }];
174 }
175 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion {
176 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) {
177
178 if (completion == NULL) {
179 return ;
180 }
181
182 if (error == nil)
183 {
184 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
185
123 int status = [dataResult[@"status"] intValue]; 186 int status = [dataResult[@"status"] intValue];
124 if (status == 1) { // status = 1 success 187 if (status == 1) { // status = 1 success
125 completion(nil); 188 completion(nil);
126 } 189 }
127 else { // status = 0 error 190 else { // status = 0 error
128 NSString *message = dataResult[@"message"]; 191 NSString *message = dataResult[@"message"];
129 NSError *registerFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 192 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
130 completion(registerFaild); 193 completion(confirmForgetPass);
131 } 194 }
132 */
133 } 195 }
134 else 196 else
135 { 197 {
136 completion(error); 198 completion(error);
137 } 199 }
138 }]; 200 }];
139 } 201 }
140 202
141 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion { 203 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion {
142 NSDictionary *dict = nil; 204 NSDictionary *dict = nil;
143 NSString *base64Encoded = [data base64EncodedStringWithOptions:0]; 205 NSString *base64Encoded = [data base64EncodedStringWithOptions:0];
144 if (token != nil) { 206 if (token != nil) {
145 dict = @{@"token":token, @"img": base64Encoded}; 207 dict = @{@"token":token, @"img": base64Encoded};
146 } 208 }
147 else { 209 else {
148 dict = @{@"img": base64Encoded}; 210 dict = @{@"img": base64Encoded};
149 } 211 }
150 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" paras:dict completion:^(NSData *data, NSError *error) { 212 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" paras:dict completion:^(NSData *data, NSError *error) {
151 213
152 if (completion == NULL) { 214 if (completion == NULL) {
153 return ; 215 return ;
154 } 216 }
155 217
156 if (error == nil) 218 if (error == nil)
157 { 219 {
158 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 220 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
159 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]]; 221 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]];
160 completion(image_profile, nil); 222 completion(image_profile, nil);
161 } 223 }
162 else 224 else
163 { 225 {
164 completion(nil, error); 226 completion(nil, error);
165 } 227 }
166 }]; 228 }];
167 } 229 }
168 230
169 #pragma mark - Private Function 231 #pragma mark - Private Function
170 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary 232 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary
171 { 233 {
172 NSMutableArray *parts = [[NSMutableArray alloc] init]; 234 NSMutableArray *parts = [[NSMutableArray alloc] init];
173 for (id key in dictionary) 235 for (id key in dictionary)
174 { 236 {
175 NSString *encodedValue = [[dictionary[key] description] urlencode]; 237 NSString *encodedValue = [[dictionary[key] description] urlencode];
176 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; 238 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
177 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue]; 239 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue];
178 [parts addObject:part]; 240 [parts addObject:part];
179 } 241 }
180 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"]; 242 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"];
181 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding]; 243 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding];
182 } 244 }
183 245
184 - (void) _request:(NSString *)address method:(NSString *)method paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion 246 - (void) _request:(NSString *)address method:(NSString *)method paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion
185 { 247 {
186 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]]; 248 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]];
187 request.HTTPMethod = method; 249 request.HTTPMethod = method;
188 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"]; 250 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"];
189 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"]; 251 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"];
190 [request setTimeoutInterval:self.timeOutInterval]; 252 [request setTimeoutInterval:self.timeOutInterval];
191 253
192 if (paras != nil) 254 if (paras != nil)
193 { 255 {
194 NSData *encodedData = [self _encodeDictionary: paras]; 256 NSData *encodedData = [self _encodeDictionary: paras];
195 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"]; 257 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"];
196 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"]; 258 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"];
197 [request setHTTPBody: encodedData]; 259 [request setHTTPBody: encodedData];
198 } 260 }
199 261
200 NSURLSession *session = [NSURLSession sharedSession]; 262 NSURLSession *session = [NSURLSession sharedSession];
201 NSURLSessionDataTask *task = [session dataTaskWithRequest:request 263 NSURLSessionDataTask *task = [session dataTaskWithRequest:request
202 completionHandler: 264 completionHandler:
203 ^(NSData *data, NSURLResponse *response, NSError *error) { 265 ^(NSData *data, NSURLResponse *response, NSError *error) {
204 if (completion == NULL) { 266 if (completion == NULL) {
205 return ; 267 return ;
206 } 268 }
207 if (error == nil) 269 if (error == nil)
208 { 270 {
209 completion(data, nil); 271 completion(data, nil);
210 } 272 }
211 else 273 else
212 { 274 {
213 completion(nil, error); 275 completion(nil, error);
214 } 276 }
215 }]; 277 }];
216 278
217 [task resume]; 279 [task resume];
218 } 280 }
219 281
LifeLog/LifeLog/User.m
1 // 1 //
2 // User.m 2 // User.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "User.h" 9 #import "User.h"
10 10
11 @implementation User 11 @implementation User
12 //- (id)initWithCoder:(NSCoder *)decoder { 12 - (id)initWithCoder:(NSCoder *)decoder {
13 // self = [super init]; 13 self = [super init];
14 // if (!self) { 14 if (!self) {
15 // return nil; 15 return nil;
16 // } 16 }
17 // 17
18 // self.user_id = [decoder decodeObjectForKey:@"user_id"]; 18 self.user_id = [decoder decodeObjectForKey:@"user_id"];
19 // self.access_token = [decoder decodeObjectForKey:@"access_token"]; 19 self.username = [decoder decodeObjectForKey:@"username"];
20 // self.full_name = [decoder decodeObjectForKey:@"full_name"]; 20 self.password = [decoder decodeObjectForKey:@"password"];
21 // self.picture = [decoder decodeObjectForKey:@"picture"]; 21 self.full_name = [decoder decodeObjectForKey:@"full_name"];
22 // 22 self.nickname = [decoder decodeObjectForKey:@"nickname"];
23 // return self; 23 self.birthday = [decoder decodeObjectForKey:@"birthday"];
24 //} 24 self.height = [decoder decodeFloatForKey:@"height"];
25 // 25 self.weight = [decoder decodeFloatForKey:@"weight"];
26 //- (void)encodeWithCoder:(NSCoder *)encoder { 26 self.gender = [decoder decodeIntForKey:@"gender"];
27 // [encoder encodeObject:self.user_id forKey:@"user_id"]; 27 self.address = [decoder decodeObjectForKey:@"address"];
28 // [encoder encodeObject:self.access_token forKey:@"access_token"]; 28 self.user_description = [decoder decodeObjectForKey:@"user_description"];
29 // [encoder encodeObject:self.full_name forKey:@"full_name"]; 29 self.email = [decoder decodeObjectForKey:@"email"];
30 // [encoder encodeObject:self.picture forKey:@"picture"]; 30 self.phone = [decoder decodeObjectForKey:@"phone"];
31 //} 31
32 return self;
33 }
34
35 - (void)encodeWithCoder:(NSCoder *)encoder {
36 [encoder encodeObject:self.user_id forKey:@"user_id"];
37 [encoder encodeObject:self.username forKey:@"username"];
38 [encoder encodeObject:self.password forKey:@"password"];
39 [encoder encodeObject:self.full_name forKey:@"full_name"];
40 [encoder encodeObject:self.nickname forKey:@"nickname"];
41 [encoder encodeObject:self.birthday forKey:@"birthday"];
42 [encoder encodeFloat:self.height forKey:@"height"];
43 [encoder encodeFloat:self.weight forKey:@"weight"];
44 [encoder encodeInt:self.gender forKey:@"gender"];
45 [encoder encodeObject:self.address forKey:@"address"];
46 [encoder encodeObject:self.user_description forKey:@"user_description"];
47 [encoder encodeObject:self.email forKey:@"email"];
48 [encoder encodeObject:self.phone forKey:@"phone"];
49 }
32 @end 50 @end
33 51
LifeLog/LifeLog/Utilities.h
1 // 1 //
2 // Utilities.h 2 // Utilities.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/29/17. 5 // Created by Nguyen Van Phong on 7/29/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import <Foundation/Foundation.h> 9 #import <Foundation/Foundation.h>
10 #import <UIKit/UIKit.h> 10 #import <UIKit/UIKit.h>
11 11
12 @interface Utilities : NSObject 12 @interface Utilities : NSObject
13 + (NSString *)addCommaFromNumber:(NSInteger)number; 13 + (NSString *)addCommaFromNumber:(NSInteger)number;
14 + (UIColor *)convertHecToColor:(int) hex; 14 + (UIColor *)convertHecToColor:(int) hex;
15 + (void)showErrorMessage:(NSString *)message withViewController:(UIViewController *)vc;
15 @end 16 @end
16 17
LifeLog/LifeLog/Utilities.m
1 // 1 //
2 // Utilities.m 2 // Utilities.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/29/17. 5 // Created by Nguyen Van Phong on 7/29/17.
6 // Copyright © 2017 PhongNV. All rights reserved. 6 // Copyright © 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "Utilities.h" 9 #import "Utilities.h"
10 10
11 @implementation Utilities 11 @implementation Utilities
12 + (NSString *)addCommaFromNumber:(NSInteger)number 12 + (NSString *)addCommaFromNumber:(NSInteger)number
13 { 13 {
14 NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init]; 14 NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
15 [fmt setNumberStyle:NSNumberFormatterDecimalStyle]; 15 [fmt setNumberStyle:NSNumberFormatterDecimalStyle];
16 [fmt setMaximumFractionDigits:0]; 16 [fmt setMaximumFractionDigits:0];
17 NSString *result = [fmt stringFromNumber:@(number)]; 17 NSString *result = [fmt stringFromNumber:@(number)];
18 return result; 18 return result;
19 } 19 }
20 20
21 + (UIColor *)convertHecToColor:(int) hex 21 + (UIColor *)convertHecToColor:(int) hex
22 { 22 {
23 return [UIColor colorWithRed:((float)((hex & 0xFF0000) >> 16))/255.0 \ 23 return [UIColor colorWithRed:((float)((hex & 0xFF0000) >> 16))/255.0 \
24 green:((float)((hex & 0xFF00) >> 8))/255.0 \ 24 green:((float)((hex & 0xFF00) >> 8))/255.0 \
25 blue:((float)(hex & 0xFF))/255.0 alpha:1.0]; 25 blue:((float)(hex & 0xFF))/255.0 alpha:1.0];
26 } 26 }
27 27
28 + (void)showErrorMessage:(NSString *)message withViewController:(UIViewController *)vc
29 {
30 if (message.length > 0) {
31 UIAlertController * alert= [UIAlertController
32 alertControllerWithTitle:@"Error"
33 message:message
34 preferredStyle:UIAlertControllerStyleAlert];
35
36 UIAlertAction* ok = [UIAlertAction
37 actionWithTitle:@"OK"
38 style:UIAlertActionStyleDefault
39 handler:^(UIAlertAction * action)
40 {
41 [alert dismissViewControllerAnimated:YES completion:nil];
42
43 }];
44
45 [alert addAction:ok];
46
47 [vc presentViewController:alert animated:YES completion:nil];
48 }
49 }
50
28 @end 51 @end
29 52