Commit e796f8345cf407df174166eb3d8c949a6b12f59f

Authored by nvtu11790@gmail.com
1 parent 29486f50ff

Add ranking API in Ranking Screen, display result in screen

Showing 14 changed files with 212 additions and 88 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 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */; }; 16 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */; };
17 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */; }; 17 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */; };
18 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */; }; 18 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */; };
19 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */; }; 19 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */; };
20 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; }; 20 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; };
21 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; }; 21 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; };
22 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; }; 22 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; };
23 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; }; 23 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; };
24 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; }; 24 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; };
25 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; }; 25 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; };
26 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; }; 26 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; };
27 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; }; 27 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; };
28 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; }; 28 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; };
29 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; }; 29 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; };
30 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */; }; 30 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */; };
31 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */; }; 31 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */; };
32 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */; }; 32 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */; };
33 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */; }; 33 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */; };
34 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3C31F27ACAE001EB88E /* MapViewController.m */; }; 34 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3C31F27ACAE001EB88E /* MapViewController.m */; };
35 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */; }; 35 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */; };
36 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */; }; 36 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */; };
37 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */; }; 37 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */; };
38 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */; }; 38 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */; };
39 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */; }; 39 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */; };
40 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF301F40BB7A00F52CFE /* TopObject.m */; }; 40 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF301F40BB7A00F52CFE /* TopObject.m */; };
41 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */; }; 41 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */; };
42 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; }; 42 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; };
43 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; }; 43 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; };
44 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; }; 44 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; };
45 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */; }; 45 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */; };
46 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */; }; 46 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */; };
47 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; }; 47 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; };
48 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; }; 48 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; };
49 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; }; 49 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; };
50 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */; }; 50 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */; };
51 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */; }; 51 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */; };
52 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */; }; 52 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */; };
53 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */; }; 53 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */; };
54 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6731F3E0E4E002926F5 /* GroupObject.m */; }; 54 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6731F3E0E4E002926F5 /* GroupObject.m */; };
55 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6771F40513C002926F5 /* GroupDetailViewController.m */; }; 55 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6771F40513C002926F5 /* GroupDetailViewController.m */; };
56 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E6781F40513C002926F5 /* GroupDetailViewController.xib */; }; 56 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E6781F40513C002926F5 /* GroupDetailViewController.xib */; };
57 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E461F3596940059355A /* AutoTransLabel.m */; }; 57 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E461F3596940059355A /* AutoTransLabel.m */; };
58 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E491F35AA180059355A /* HistoryObject.m */; }; 58 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E491F35AA180059355A /* HistoryObject.m */; };
59 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E4C1F361A230059355A /* HistoryGraphObject.m */; };
60 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9497FD41F46EC1100E6AF8D /* MemberObject.m */; }; 59 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9497FD41F46EC1100E6AF8D /* MemberObject.m */; };
61 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */; }; 60 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */; };
62 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */; }; 61 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */; };
63 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */; }; 62 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */; };
64 E95F4CF41F48B39200D27E80 /* MyGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */; }; 63 E95F4CF41F48B39200D27E80 /* MyGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */; };
65 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */; }; 64 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */; };
66 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */; }; 65 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */; };
67 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E96855091F3C444900317CEF /* AutoTransButton.m */; }; 66 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E96855091F3C444900317CEF /* AutoTransButton.m */; };
68 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */; }; 67 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */; };
69 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */; }; 68 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */; };
69 E97588FC1F513BAD00782484 /* RankingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E97588FB1F513BAD00782484 /* RankingObject.m */; };
70 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E997E0251F3AB66500709FB1 /* Social.framework */; }; 70 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E997E0251F3AB66500709FB1 /* Social.framework */; };
71 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AA1F336F3600C78787 /* CollectionView.m */; }; 71 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AA1F336F3600C78787 /* CollectionView.m */; };
72 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13AC1F336F4500C78787 /* CollectionView.xib */; }; 72 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13AC1F336F4500C78787 /* CollectionView.xib */; };
73 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */; }; 73 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */; };
74 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */; }; 74 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */; };
75 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909201F3D559D004CF99F /* TweetObject.m */; }; 75 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909201F3D559D004CF99F /* TweetObject.m */; };
76 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */; }; 76 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */; };
77 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */; }; 77 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */; };
78 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */; }; 78 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */; };
79 /* End PBXBuildFile section */ 79 /* End PBXBuildFile section */
80 80
81 /* Begin PBXContainerItemProxy section */ 81 /* Begin PBXContainerItemProxy section */
82 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = { 82 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = {
83 isa = PBXContainerItemProxy; 83 isa = PBXContainerItemProxy;
84 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 84 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
85 proxyType = 1; 85 proxyType = 1;
86 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 86 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
87 remoteInfo = LifeLog; 87 remoteInfo = LifeLog;
88 }; 88 };
89 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = { 89 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = {
90 isa = PBXContainerItemProxy; 90 isa = PBXContainerItemProxy;
91 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 91 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
92 proxyType = 1; 92 proxyType = 1;
93 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 93 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
94 remoteInfo = LifeLog; 94 remoteInfo = LifeLog;
95 }; 95 };
96 /* End PBXContainerItemProxy section */ 96 /* End PBXContainerItemProxy section */
97 97
98 /* Begin PBXFileReference section */ 98 /* Begin PBXFileReference section */
99 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>"; }; 99 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>"; };
100 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LifeLog.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 100 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LifeLog.framework; sourceTree = BUILT_PRODUCTS_DIR; };
101 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>"; }; 101 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>"; };
102 6E18CED01F2E39DB0029891F /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; }; 102 6E18CED01F2E39DB0029891F /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; };
103 6E18CED11F2E39DB0029891F /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; }; 103 6E18CED11F2E39DB0029891F /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; };
104 6E18CED21F2E39DB0029891F /* LoginViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; }; 104 6E18CED21F2E39DB0029891F /* LoginViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; };
105 6E18CED61F2E3C840029891F /* ServerAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerAPI.h; sourceTree = "<group>"; }; 105 6E18CED61F2E3C840029891F /* ServerAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerAPI.h; sourceTree = "<group>"; };
106 6E18CED71F2E3C840029891F /* ServerAPI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerAPI.m; sourceTree = "<group>"; }; 106 6E18CED71F2E3C840029891F /* ServerAPI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerAPI.m; sourceTree = "<group>"; };
107 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; }; 107 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; };
108 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; }; 108 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; };
109 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; }; 109 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; };
110 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; }; 110 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; };
111 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; }; 111 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; };
112 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingCollectionView.h; sourceTree = "<group>"; }; 112 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingCollectionView.h; sourceTree = "<group>"; };
113 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingCollectionView.m; sourceTree = "<group>"; }; 113 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingCollectionView.m; sourceTree = "<group>"; };
114 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingScrollView.h; sourceTree = "<group>"; }; 114 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingScrollView.h; sourceTree = "<group>"; };
115 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingScrollView.m; sourceTree = "<group>"; }; 115 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingScrollView.m; sourceTree = "<group>"; };
116 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingTableView.h; sourceTree = "<group>"; }; 116 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingTableView.h; sourceTree = "<group>"; };
117 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingTableView.m; sourceTree = "<group>"; }; 117 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingTableView.m; sourceTree = "<group>"; };
118 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+TPKeyboardAvoidingAdditions.h"; sourceTree = "<group>"; }; 118 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+TPKeyboardAvoidingAdditions.h"; sourceTree = "<group>"; };
119 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+TPKeyboardAvoidingAdditions.m"; sourceTree = "<group>"; }; 119 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+TPKeyboardAvoidingAdditions.m"; sourceTree = "<group>"; };
120 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; 120 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; };
121 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; 121 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
122 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; 122 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
123 6E84E3781F27A701001EB88E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; 123 6E84E3781F27A701001EB88E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
124 6E84E3801F27A701001EB88E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 124 6E84E3801F27A701001EB88E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
125 6E84E3831F27A701001EB88E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 125 6E84E3831F27A701001EB88E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
126 6E84E3851F27A701001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 126 6E84E3851F27A701001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
127 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 127 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
128 6E84E38E1F27A703001EB88E /* LifeLogTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogTests.m; sourceTree = "<group>"; }; 128 6E84E38E1F27A703001EB88E /* LifeLogTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogTests.m; sourceTree = "<group>"; };
129 6E84E3901F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 129 6E84E3901F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
130 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 130 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
131 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = "<group>"; }; 131 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = "<group>"; };
132 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 132 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
133 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; }; 133 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
134 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; }; 134 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
135 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; }; 135 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; };
136 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; }; 136 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; };
137 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = "<group>"; }; 137 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = "<group>"; };
138 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = "<group>"; }; 138 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = "<group>"; };
139 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingViewController.h; sourceTree = "<group>"; }; 139 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingViewController.h; sourceTree = "<group>"; };
140 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingViewController.m; sourceTree = "<group>"; }; 140 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingViewController.m; sourceTree = "<group>"; };
141 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingViewController.xib; sourceTree = "<group>"; }; 141 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingViewController.xib; sourceTree = "<group>"; };
142 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSViewController.h; sourceTree = "<group>"; }; 142 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSViewController.h; sourceTree = "<group>"; };
143 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSViewController.m; sourceTree = "<group>"; }; 143 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSViewController.m; sourceTree = "<group>"; };
144 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSViewController.xib; sourceTree = "<group>"; }; 144 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSViewController.xib; sourceTree = "<group>"; };
145 6E84E3C21F27ACAE001EB88E /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewController.h; sourceTree = "<group>"; }; 145 6E84E3C21F27ACAE001EB88E /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewController.h; sourceTree = "<group>"; };
146 6E84E3C31F27ACAE001EB88E /* MapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewController.m; sourceTree = "<group>"; }; 146 6E84E3C31F27ACAE001EB88E /* MapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewController.m; sourceTree = "<group>"; };
147 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; }; 147 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; };
148 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = "<group>"; }; 148 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = "<group>"; };
149 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = "<group>"; }; 149 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = "<group>"; };
150 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TodayViewController.xib; sourceTree = "<group>"; }; 150 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TodayViewController.xib; sourceTree = "<group>"; };
151 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StepObject.h; sourceTree = "<group>"; }; 151 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StepObject.h; sourceTree = "<group>"; };
152 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StepObject.m; sourceTree = "<group>"; }; 152 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StepObject.m; sourceTree = "<group>"; };
153 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetInfor.h; sourceTree = "<group>"; }; 153 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetInfor.h; sourceTree = "<group>"; };
154 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetInfor.m; sourceTree = "<group>"; }; 154 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetInfor.m; sourceTree = "<group>"; };
155 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TopObject.h; sourceTree = "<group>"; }; 155 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TopObject.h; sourceTree = "<group>"; };
156 6EA4AF301F40BB7A00F52CFE /* TopObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TopObject.m; sourceTree = "<group>"; }; 156 6EA4AF301F40BB7A00F52CFE /* TopObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TopObject.m; sourceTree = "<group>"; };
157 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+helper.h"; sourceTree = "<group>"; }; 157 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+helper.h"; sourceTree = "<group>"; };
158 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+helper.m"; sourceTree = "<group>"; }; 158 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+helper.m"; sourceTree = "<group>"; };
159 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; }; 159 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; };
160 6EDC8BED1F2C2FB800765ACC /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; }; 160 6EDC8BED1F2C2FB800765ACC /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; };
161 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; }; 161 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; };
162 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; }; 162 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; };
163 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; }; 163 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
164 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfirmForgetPassViewController.h; sourceTree = "<group>"; }; 164 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfirmForgetPassViewController.h; sourceTree = "<group>"; };
165 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfirmForgetPassViewController.m; sourceTree = "<group>"; }; 165 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfirmForgetPassViewController.m; sourceTree = "<group>"; };
166 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfirmForgetPassViewController.xib; sourceTree = "<group>"; }; 166 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfirmForgetPassViewController.xib; sourceTree = "<group>"; };
167 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; }; 167 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; };
168 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; }; 168 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; };
169 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; }; 169 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; };
170 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterViewController.m; sourceTree = "<group>"; }; 170 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterViewController.m; sourceTree = "<group>"; };
171 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RegisterViewController.xib; sourceTree = "<group>"; }; 171 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RegisterViewController.xib; sourceTree = "<group>"; };
172 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupViewController.h; sourceTree = "<group>"; }; 172 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupViewController.h; sourceTree = "<group>"; };
173 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupViewController.m; sourceTree = "<group>"; }; 173 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupViewController.m; sourceTree = "<group>"; };
174 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupViewController.xib; sourceTree = "<group>"; }; 174 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupViewController.xib; sourceTree = "<group>"; };
175 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupTableViewCell.h; sourceTree = "<group>"; }; 175 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupTableViewCell.h; sourceTree = "<group>"; };
176 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupTableViewCell.m; sourceTree = "<group>"; }; 176 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupTableViewCell.m; sourceTree = "<group>"; };
177 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupTableViewCell.xib; sourceTree = "<group>"; }; 177 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupTableViewCell.xib; sourceTree = "<group>"; };
178 E933E6721F3E0E4E002926F5 /* GroupObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupObject.h; sourceTree = "<group>"; }; 178 E933E6721F3E0E4E002926F5 /* GroupObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupObject.h; sourceTree = "<group>"; };
179 E933E6731F3E0E4E002926F5 /* GroupObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupObject.m; sourceTree = "<group>"; }; 179 E933E6731F3E0E4E002926F5 /* GroupObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupObject.m; sourceTree = "<group>"; };
180 E933E6761F40513C002926F5 /* GroupDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupDetailViewController.h; sourceTree = "<group>"; }; 180 E933E6761F40513C002926F5 /* GroupDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupDetailViewController.h; sourceTree = "<group>"; };
181 E933E6771F40513C002926F5 /* GroupDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupDetailViewController.m; sourceTree = "<group>"; }; 181 E933E6771F40513C002926F5 /* GroupDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupDetailViewController.m; sourceTree = "<group>"; };
182 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupDetailViewController.xib; sourceTree = "<group>"; }; 182 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupDetailViewController.xib; sourceTree = "<group>"; };
183 E9373E451F3596940059355A /* AutoTransLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransLabel.h; sourceTree = "<group>"; }; 183 E9373E451F3596940059355A /* AutoTransLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransLabel.h; sourceTree = "<group>"; };
184 E9373E461F3596940059355A /* AutoTransLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransLabel.m; sourceTree = "<group>"; }; 184 E9373E461F3596940059355A /* AutoTransLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransLabel.m; sourceTree = "<group>"; };
185 E9373E481F35AA180059355A /* HistoryObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryObject.h; sourceTree = "<group>"; }; 185 E9373E481F35AA180059355A /* HistoryObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryObject.h; sourceTree = "<group>"; };
186 E9373E491F35AA180059355A /* HistoryObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryObject.m; sourceTree = "<group>"; }; 186 E9373E491F35AA180059355A /* HistoryObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryObject.m; sourceTree = "<group>"; };
187 E9373E4B1F361A230059355A /* HistoryGraphObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryGraphObject.h; sourceTree = "<group>"; };
188 E9373E4C1F361A230059355A /* HistoryGraphObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryGraphObject.m; sourceTree = "<group>"; };
189 E9497FD31F46EC1100E6AF8D /* MemberObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberObject.h; sourceTree = "<group>"; }; 187 E9497FD31F46EC1100E6AF8D /* MemberObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberObject.h; sourceTree = "<group>"; };
190 E9497FD41F46EC1100E6AF8D /* MemberObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MemberObject.m; sourceTree = "<group>"; }; 188 E9497FD41F46EC1100E6AF8D /* MemberObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MemberObject.m; sourceTree = "<group>"; };
191 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateGroupViewController.h; sourceTree = "<group>"; }; 189 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateGroupViewController.h; sourceTree = "<group>"; };
192 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateGroupViewController.m; sourceTree = "<group>"; }; 190 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateGroupViewController.m; sourceTree = "<group>"; };
193 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CreateGroupViewController.xib; sourceTree = "<group>"; }; 191 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CreateGroupViewController.xib; sourceTree = "<group>"; };
194 E95F4CF01F48B39200D27E80 /* MyGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyGroupViewController.h; sourceTree = "<group>"; }; 192 E95F4CF01F48B39200D27E80 /* MyGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyGroupViewController.h; sourceTree = "<group>"; };
195 E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyGroupViewController.m; sourceTree = "<group>"; }; 193 E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyGroupViewController.m; sourceTree = "<group>"; };
196 E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MyGroupViewController.xib; sourceTree = "<group>"; }; 194 E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MyGroupViewController.xib; sourceTree = "<group>"; };
197 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingTableViewCell.h; sourceTree = "<group>"; }; 195 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingTableViewCell.h; sourceTree = "<group>"; };
198 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingTableViewCell.m; sourceTree = "<group>"; }; 196 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingTableViewCell.m; sourceTree = "<group>"; };
199 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingTableViewCell.xib; sourceTree = "<group>"; }; 197 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingTableViewCell.xib; sourceTree = "<group>"; };
200 E96855081F3C444900317CEF /* AutoTransButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransButton.h; sourceTree = "<group>"; }; 198 E96855081F3C444900317CEF /* AutoTransButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransButton.h; sourceTree = "<group>"; };
201 E96855091F3C444900317CEF /* AutoTransButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransButton.m; sourceTree = "<group>"; }; 199 E96855091F3C444900317CEF /* AutoTransButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransButton.m; sourceTree = "<group>"; };
202 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSRecentTopicTableViewCell.h; sourceTree = "<group>"; }; 200 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSRecentTopicTableViewCell.h; sourceTree = "<group>"; };
203 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSRecentTopicTableViewCell.m; sourceTree = "<group>"; }; 201 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSRecentTopicTableViewCell.m; sourceTree = "<group>"; };
204 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSRecentTopicTableViewCell.xib; sourceTree = "<group>"; }; 202 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSRecentTopicTableViewCell.xib; sourceTree = "<group>"; };
203 E97588FA1F513BAD00782484 /* RankingObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingObject.h; sourceTree = "<group>"; };
204 E97588FB1F513BAD00782484 /* RankingObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingObject.m; sourceTree = "<group>"; };
205 E997E0251F3AB66500709FB1 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; }; 205 E997E0251F3AB66500709FB1 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
206 E99E13A91F336F3600C78787 /* CollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionView.h; sourceTree = "<group>"; }; 206 E99E13A91F336F3600C78787 /* CollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionView.h; sourceTree = "<group>"; };
207 E99E13AA1F336F3600C78787 /* CollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionView.m; sourceTree = "<group>"; }; 207 E99E13AA1F336F3600C78787 /* CollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionView.m; sourceTree = "<group>"; };
208 E99E13AC1F336F4500C78787 /* CollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CollectionView.xib; sourceTree = "<group>"; }; 208 E99E13AC1F336F4500C78787 /* CollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CollectionView.xib; sourceTree = "<group>"; };
209 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelCollectionViewCell.h; sourceTree = "<group>"; }; 209 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelCollectionViewCell.h; sourceTree = "<group>"; };
210 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelCollectionViewCell.m; sourceTree = "<group>"; }; 210 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelCollectionViewCell.m; sourceTree = "<group>"; };
211 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LabelCollectionViewCell.xib; sourceTree = "<group>"; }; 211 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LabelCollectionViewCell.xib; sourceTree = "<group>"; };
212 E9D9091F1F3D559D004CF99F /* TweetObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TweetObject.h; sourceTree = "<group>"; }; 212 E9D9091F1F3D559D004CF99F /* TweetObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TweetObject.h; sourceTree = "<group>"; };
213 E9D909201F3D559D004CF99F /* TweetObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TweetObject.m; sourceTree = "<group>"; }; 213 E9D909201F3D559D004CF99F /* TweetObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TweetObject.m; sourceTree = "<group>"; };
214 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTableViewController.h; sourceTree = "<group>"; }; 214 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTableViewController.h; sourceTree = "<group>"; };
215 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseTableViewController.m; sourceTree = "<group>"; }; 215 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseTableViewController.m; sourceTree = "<group>"; };
216 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryListTableViewCell.h; sourceTree = "<group>"; }; 216 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryListTableViewCell.h; sourceTree = "<group>"; };
217 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryListTableViewCell.m; sourceTree = "<group>"; }; 217 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryListTableViewCell.m; sourceTree = "<group>"; };
218 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryListTableViewCell.xib; sourceTree = "<group>"; }; 218 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryListTableViewCell.xib; sourceTree = "<group>"; };
219 /* End PBXFileReference section */ 219 /* End PBXFileReference section */
220 220
221 /* Begin PBXFrameworksBuildPhase section */ 221 /* Begin PBXFrameworksBuildPhase section */
222 6E84E36E1F27A700001EB88E /* Frameworks */ = { 222 6E84E36E1F27A700001EB88E /* Frameworks */ = {
223 isa = PBXFrameworksBuildPhase; 223 isa = PBXFrameworksBuildPhase;
224 buildActionMask = 2147483647; 224 buildActionMask = 2147483647;
225 files = ( 225 files = (
226 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */, 226 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */,
227 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */, 227 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */,
228 ); 228 );
229 runOnlyForDeploymentPostprocessing = 0; 229 runOnlyForDeploymentPostprocessing = 0;
230 }; 230 };
231 6E84E3871F27A703001EB88E /* Frameworks */ = { 231 6E84E3871F27A703001EB88E /* Frameworks */ = {
232 isa = PBXFrameworksBuildPhase; 232 isa = PBXFrameworksBuildPhase;
233 buildActionMask = 2147483647; 233 buildActionMask = 2147483647;
234 files = ( 234 files = (
235 ); 235 );
236 runOnlyForDeploymentPostprocessing = 0; 236 runOnlyForDeploymentPostprocessing = 0;
237 }; 237 };
238 6E84E3921F27A703001EB88E /* Frameworks */ = { 238 6E84E3921F27A703001EB88E /* Frameworks */ = {
239 isa = PBXFrameworksBuildPhase; 239 isa = PBXFrameworksBuildPhase;
240 buildActionMask = 2147483647; 240 buildActionMask = 2147483647;
241 files = ( 241 files = (
242 ); 242 );
243 runOnlyForDeploymentPostprocessing = 0; 243 runOnlyForDeploymentPostprocessing = 0;
244 }; 244 };
245 /* End PBXFrameworksBuildPhase section */ 245 /* End PBXFrameworksBuildPhase section */
246 246
247 /* Begin PBXGroup section */ 247 /* Begin PBXGroup section */
248 020C1721B642EF36F31E1BB4 /* Frameworks */ = { 248 020C1721B642EF36F31E1BB4 /* Frameworks */ = {
249 isa = PBXGroup; 249 isa = PBXGroup;
250 children = ( 250 children = (
251 E997E0251F3AB66500709FB1 /* Social.framework */, 251 E997E0251F3AB66500709FB1 /* Social.framework */,
252 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */, 252 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */,
253 ); 253 );
254 name = Frameworks; 254 name = Frameworks;
255 sourceTree = "<group>"; 255 sourceTree = "<group>";
256 }; 256 };
257 6E18CECF1F2E398C0029891F /* Login */ = { 257 6E18CECF1F2E398C0029891F /* Login */ = {
258 isa = PBXGroup; 258 isa = PBXGroup;
259 children = ( 259 children = (
260 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */, 260 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */,
261 6E18CED01F2E39DB0029891F /* LoginViewController.h */, 261 6E18CED01F2E39DB0029891F /* LoginViewController.h */,
262 6E18CED11F2E39DB0029891F /* LoginViewController.m */, 262 6E18CED11F2E39DB0029891F /* LoginViewController.m */,
263 6E18CED21F2E39DB0029891F /* LoginViewController.xib */, 263 6E18CED21F2E39DB0029891F /* LoginViewController.xib */,
264 ); 264 );
265 name = Login; 265 name = Login;
266 sourceTree = "<group>"; 266 sourceTree = "<group>";
267 }; 267 };
268 6E18CED51F2E3C0E0029891F /* ServerAPI */ = { 268 6E18CED51F2E3C0E0029891F /* ServerAPI */ = {
269 isa = PBXGroup; 269 isa = PBXGroup;
270 children = ( 270 children = (
271 6E18CED61F2E3C840029891F /* ServerAPI.h */, 271 6E18CED61F2E3C840029891F /* ServerAPI.h */,
272 6E18CED71F2E3C840029891F /* ServerAPI.m */, 272 6E18CED71F2E3C840029891F /* ServerAPI.m */,
273 ); 273 );
274 name = ServerAPI; 274 name = ServerAPI;
275 sourceTree = "<group>"; 275 sourceTree = "<group>";
276 }; 276 };
277 6E18CED91F2E40AE0029891F /* Model */ = { 277 6E18CED91F2E40AE0029891F /* Model */ = {
278 isa = PBXGroup; 278 isa = PBXGroup;
279 children = ( 279 children = (
280 6E18CEDD1F2E46570029891F /* Entities.h */, 280 6E18CEDD1F2E46570029891F /* Entities.h */,
281 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */, 281 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */,
282 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */, 282 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */,
283 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */, 283 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */,
284 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */, 284 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */,
285 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */, 285 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */,
286 6EA4AF301F40BB7A00F52CFE /* TopObject.m */, 286 6EA4AF301F40BB7A00F52CFE /* TopObject.m */,
287 6E18CEDA1F2E40F50029891F /* User.h */, 287 6E18CEDA1F2E40F50029891F /* User.h */,
288 6E18CEDB1F2E40F50029891F /* User.m */, 288 6E18CEDB1F2E40F50029891F /* User.m */,
289 E9373E481F35AA180059355A /* HistoryObject.h */, 289 E9373E481F35AA180059355A /* HistoryObject.h */,
290 E9373E491F35AA180059355A /* HistoryObject.m */, 290 E9373E491F35AA180059355A /* HistoryObject.m */,
291 E9373E4B1F361A230059355A /* HistoryGraphObject.h */,
292 E9373E4C1F361A230059355A /* HistoryGraphObject.m */,
293 E9D9091F1F3D559D004CF99F /* TweetObject.h */, 291 E9D9091F1F3D559D004CF99F /* TweetObject.h */,
294 E9D909201F3D559D004CF99F /* TweetObject.m */, 292 E9D909201F3D559D004CF99F /* TweetObject.m */,
295 E933E6721F3E0E4E002926F5 /* GroupObject.h */, 293 E933E6721F3E0E4E002926F5 /* GroupObject.h */,
296 E933E6731F3E0E4E002926F5 /* GroupObject.m */, 294 E933E6731F3E0E4E002926F5 /* GroupObject.m */,
297 E9497FD31F46EC1100E6AF8D /* MemberObject.h */, 295 E9497FD31F46EC1100E6AF8D /* MemberObject.h */,
298 E9497FD41F46EC1100E6AF8D /* MemberObject.m */, 296 E9497FD41F46EC1100E6AF8D /* MemberObject.m */,
297 E97588FA1F513BAD00782484 /* RankingObject.h */,
298 E97588FB1F513BAD00782484 /* RankingObject.m */,
299 ); 299 );
300 name = Model; 300 name = Model;
301 sourceTree = "<group>"; 301 sourceTree = "<group>";
302 }; 302 };
303 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = { 303 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = {
304 isa = PBXGroup; 304 isa = PBXGroup;
305 children = ( 305 children = (
306 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */, 306 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */,
307 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */, 307 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */,
308 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */, 308 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */,
309 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */, 309 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */,
310 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */, 310 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */,
311 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */, 311 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */,
312 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */, 312 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */,
313 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */, 313 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */,
314 ); 314 );
315 name = TPKeyboardAvoiding; 315 name = TPKeyboardAvoiding;
316 sourceTree = "<group>"; 316 sourceTree = "<group>";
317 }; 317 };
318 6E84E3681F27A700001EB88E = { 318 6E84E3681F27A700001EB88E = {
319 isa = PBXGroup; 319 isa = PBXGroup;
320 children = ( 320 children = (
321 6E84E3731F27A700001EB88E /* LifeLog */, 321 6E84E3731F27A700001EB88E /* LifeLog */,
322 6E84E38D1F27A703001EB88E /* LifeLogTests */, 322 6E84E38D1F27A703001EB88E /* LifeLogTests */,
323 6E84E3981F27A703001EB88E /* LifeLogUITests */, 323 6E84E3981F27A703001EB88E /* LifeLogUITests */,
324 DE8269E957EA47CD771BAB33 /* Pods */, 324 DE8269E957EA47CD771BAB33 /* Pods */,
325 020C1721B642EF36F31E1BB4 /* Frameworks */, 325 020C1721B642EF36F31E1BB4 /* Frameworks */,
326 783929CF869F5081762B3DCA /* Products */, 326 783929CF869F5081762B3DCA /* Products */,
327 ); 327 );
328 sourceTree = "<group>"; 328 sourceTree = "<group>";
329 }; 329 };
330 6E84E3721F27A700001EB88E /* Products */ = { 330 6E84E3721F27A700001EB88E /* Products */ = {
331 isa = PBXGroup; 331 isa = PBXGroup;
332 children = ( 332 children = (
333 6E84E3711F27A700001EB88E /* LifeLog.app */, 333 6E84E3711F27A700001EB88E /* LifeLog.app */,
334 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */, 334 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */,
335 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */, 335 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */,
336 ); 336 );
337 name = Products; 337 name = Products;
338 sourceTree = "<group>"; 338 sourceTree = "<group>";
339 }; 339 };
340 6E84E3731F27A700001EB88E /* LifeLog */ = { 340 6E84E3731F27A700001EB88E /* LifeLog */ = {
341 isa = PBXGroup; 341 isa = PBXGroup;
342 children = ( 342 children = (
343 6E18CED91F2E40AE0029891F /* Model */, 343 6E18CED91F2E40AE0029891F /* Model */,
344 6E18CED51F2E3C0E0029891F /* ServerAPI */, 344 6E18CED51F2E3C0E0029891F /* ServerAPI */,
345 6EDC8BEB1F2C2F3300765ACC /* Common */, 345 6EDC8BEB1F2C2F3300765ACC /* Common */,
346 6ECC406D1F2A5FA500AAEB97 /* Library */, 346 6ECC406D1F2A5FA500AAEB97 /* Library */,
347 E99E13A71F336F0C00C78787 /* CustomView */, 347 E99E13A71F336F0C00C78787 /* CustomView */,
348 6E84E3A81F27A8A9001EB88E /* ViewControllers */, 348 6E84E3A81F27A8A9001EB88E /* ViewControllers */,
349 6E84E3A71F27A887001EB88E /* AppDelegate */, 349 6E84E3A71F27A887001EB88E /* AppDelegate */,
350 6E84E3801F27A701001EB88E /* Assets.xcassets */, 350 6E84E3801F27A701001EB88E /* Assets.xcassets */,
351 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */, 351 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */,
352 6E84E3851F27A701001EB88E /* Info.plist */, 352 6E84E3851F27A701001EB88E /* Info.plist */,
353 6E84E3741F27A701001EB88E /* Supporting Files */, 353 6E84E3741F27A701001EB88E /* Supporting Files */,
354 ); 354 );
355 path = LifeLog; 355 path = LifeLog;
356 sourceTree = "<group>"; 356 sourceTree = "<group>";
357 }; 357 };
358 6E84E3741F27A701001EB88E /* Supporting Files */ = { 358 6E84E3741F27A701001EB88E /* Supporting Files */ = {
359 isa = PBXGroup; 359 isa = PBXGroup;
360 children = ( 360 children = (
361 6E84E3751F27A701001EB88E /* main.m */, 361 6E84E3751F27A701001EB88E /* main.m */,
362 6EF163091F29069300DA306C /* Localizable.strings */, 362 6EF163091F29069300DA306C /* Localizable.strings */,
363 ); 363 );
364 name = "Supporting Files"; 364 name = "Supporting Files";
365 sourceTree = "<group>"; 365 sourceTree = "<group>";
366 }; 366 };
367 6E84E38D1F27A703001EB88E /* LifeLogTests */ = { 367 6E84E38D1F27A703001EB88E /* LifeLogTests */ = {
368 isa = PBXGroup; 368 isa = PBXGroup;
369 children = ( 369 children = (
370 6E84E38E1F27A703001EB88E /* LifeLogTests.m */, 370 6E84E38E1F27A703001EB88E /* LifeLogTests.m */,
371 6E84E3901F27A703001EB88E /* Info.plist */, 371 6E84E3901F27A703001EB88E /* Info.plist */,
372 ); 372 );
373 path = LifeLogTests; 373 path = LifeLogTests;
374 sourceTree = "<group>"; 374 sourceTree = "<group>";
375 }; 375 };
376 6E84E3981F27A703001EB88E /* LifeLogUITests */ = { 376 6E84E3981F27A703001EB88E /* LifeLogUITests */ = {
377 isa = PBXGroup; 377 isa = PBXGroup;
378 children = ( 378 children = (
379 6E84E3991F27A703001EB88E /* LifeLogUITests.m */, 379 6E84E3991F27A703001EB88E /* LifeLogUITests.m */,
380 6E84E39B1F27A703001EB88E /* Info.plist */, 380 6E84E39B1F27A703001EB88E /* Info.plist */,
381 ); 381 );
382 path = LifeLogUITests; 382 path = LifeLogUITests;
383 sourceTree = "<group>"; 383 sourceTree = "<group>";
384 }; 384 };
385 6E84E3A71F27A887001EB88E /* AppDelegate */ = { 385 6E84E3A71F27A887001EB88E /* AppDelegate */ = {
386 isa = PBXGroup; 386 isa = PBXGroup;
387 children = ( 387 children = (
388 6E84E3771F27A701001EB88E /* AppDelegate.h */, 388 6E84E3771F27A701001EB88E /* AppDelegate.h */,
389 6E84E3781F27A701001EB88E /* AppDelegate.m */, 389 6E84E3781F27A701001EB88E /* AppDelegate.m */,
390 ); 390 );
391 name = AppDelegate; 391 name = AppDelegate;
392 sourceTree = "<group>"; 392 sourceTree = "<group>";
393 }; 393 };
394 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = { 394 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = {
395 isa = PBXGroup; 395 isa = PBXGroup;
396 children = ( 396 children = (
397 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */, 397 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */,
398 9CBDA0FB1F2F03490055DED1 /* Register */, 398 9CBDA0FB1F2F03490055DED1 /* Register */,
399 6E18CECF1F2E398C0029891F /* Login */, 399 6E18CECF1F2E398C0029891F /* Login */,
400 6E84E3AC1F27A954001EB88E /* SNS */, 400 6E84E3AC1F27A954001EB88E /* SNS */,
401 6E84E3C11F27AC89001EB88E /* Map */, 401 6E84E3C11F27AC89001EB88E /* Map */,
402 6E84E3AB1F27A946001EB88E /* Ranking */, 402 6E84E3AB1F27A946001EB88E /* Ranking */,
403 6E84E3AA1F27A924001EB88E /* History */, 403 6E84E3AA1F27A924001EB88E /* History */,
404 6E84E3A91F27A915001EB88E /* Home */, 404 6E84E3A91F27A915001EB88E /* Home */,
405 ); 405 );
406 name = ViewControllers; 406 name = ViewControllers;
407 sourceTree = "<group>"; 407 sourceTree = "<group>";
408 }; 408 };
409 6E84E3A91F27A915001EB88E /* Home */ = { 409 6E84E3A91F27A915001EB88E /* Home */ = {
410 isa = PBXGroup; 410 isa = PBXGroup;
411 children = ( 411 children = (
412 6E8DA0F31F2BAC0800CCE941 /* Today */, 412 6E8DA0F31F2BAC0800CCE941 /* Today */,
413 6E84E3AD1F27A975001EB88E /* HomeViewController.h */, 413 6E84E3AD1F27A975001EB88E /* HomeViewController.h */,
414 6E84E3AE1F27A975001EB88E /* HomeViewController.m */, 414 6E84E3AE1F27A975001EB88E /* HomeViewController.m */,
415 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */, 415 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */,
416 ); 416 );
417 name = Home; 417 name = Home;
418 sourceTree = "<group>"; 418 sourceTree = "<group>";
419 }; 419 };
420 6E84E3AA1F27A924001EB88E /* History */ = { 420 6E84E3AA1F27A924001EB88E /* History */ = {
421 isa = PBXGroup; 421 isa = PBXGroup;
422 children = ( 422 children = (
423 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */, 423 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */,
424 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */, 424 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */,
425 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */, 425 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */,
426 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */, 426 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */,
427 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */, 427 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */,
428 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */, 428 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */,
429 ); 429 );
430 name = History; 430 name = History;
431 sourceTree = "<group>"; 431 sourceTree = "<group>";
432 }; 432 };
433 6E84E3AB1F27A946001EB88E /* Ranking */ = { 433 6E84E3AB1F27A946001EB88E /* Ranking */ = {
434 isa = PBXGroup; 434 isa = PBXGroup;
435 children = ( 435 children = (
436 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */, 436 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */,
437 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */, 437 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */,
438 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */, 438 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */,
439 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */, 439 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */,
440 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */, 440 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */,
441 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */, 441 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */,
442 ); 442 );
443 name = Ranking; 443 name = Ranking;
444 sourceTree = "<group>"; 444 sourceTree = "<group>";
445 }; 445 };
446 6E84E3AC1F27A954001EB88E /* SNS */ = { 446 6E84E3AC1F27A954001EB88E /* SNS */ = {
447 isa = PBXGroup; 447 isa = PBXGroup;
448 children = ( 448 children = (
449 E95F4CEF1F48B37100D27E80 /* MyGroup */, 449 E95F4CEF1F48B37100D27E80 /* MyGroup */,
450 E95F4CE91F475C4B00D27E80 /* CreateGroup */, 450 E95F4CE91F475C4B00D27E80 /* CreateGroup */,
451 E933E6751F4050E6002926F5 /* GroupDetail */, 451 E933E6751F4050E6002926F5 /* GroupDetail */,
452 E933E6671F3E0479002926F5 /* SeachGroup */, 452 E933E6671F3E0479002926F5 /* SeachGroup */,
453 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */, 453 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */,
454 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */, 454 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */,
455 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */, 455 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */,
456 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */, 456 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */,
457 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */, 457 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */,
458 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */, 458 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */,
459 ); 459 );
460 name = SNS; 460 name = SNS;
461 sourceTree = "<group>"; 461 sourceTree = "<group>";
462 }; 462 };
463 6E84E3C11F27AC89001EB88E /* Map */ = { 463 6E84E3C11F27AC89001EB88E /* Map */ = {
464 isa = PBXGroup; 464 isa = PBXGroup;
465 children = ( 465 children = (
466 6E84E3C21F27ACAE001EB88E /* MapViewController.h */, 466 6E84E3C21F27ACAE001EB88E /* MapViewController.h */,
467 6E84E3C31F27ACAE001EB88E /* MapViewController.m */, 467 6E84E3C31F27ACAE001EB88E /* MapViewController.m */,
468 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */, 468 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */,
469 ); 469 );
470 name = Map; 470 name = Map;
471 sourceTree = "<group>"; 471 sourceTree = "<group>";
472 }; 472 };
473 6E8DA0F31F2BAC0800CCE941 /* Today */ = { 473 6E8DA0F31F2BAC0800CCE941 /* Today */ = {
474 isa = PBXGroup; 474 isa = PBXGroup;
475 children = ( 475 children = (
476 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */, 476 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */,
477 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */, 477 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */,
478 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */, 478 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */,
479 ); 479 );
480 name = Today; 480 name = Today;
481 sourceTree = "<group>"; 481 sourceTree = "<group>";
482 }; 482 };
483 6ECC406D1F2A5FA500AAEB97 /* Library */ = { 483 6ECC406D1F2A5FA500AAEB97 /* Library */ = {
484 isa = PBXGroup; 484 isa = PBXGroup;
485 children = ( 485 children = (
486 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */, 486 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */,
487 6ECC406E1F2A5FB200AAEB97 /* Category */, 487 6ECC406E1F2A5FB200AAEB97 /* Category */,
488 ); 488 );
489 name = Library; 489 name = Library;
490 sourceTree = "<group>"; 490 sourceTree = "<group>";
491 }; 491 };
492 6ECC406E1F2A5FB200AAEB97 /* Category */ = { 492 6ECC406E1F2A5FB200AAEB97 /* Category */ = {
493 isa = PBXGroup; 493 isa = PBXGroup;
494 children = ( 494 children = (
495 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */, 495 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */,
496 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */, 496 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */,
497 ); 497 );
498 name = Category; 498 name = Category;
499 sourceTree = "<group>"; 499 sourceTree = "<group>";
500 }; 500 };
501 6EDC8BEB1F2C2F3300765ACC /* Common */ = { 501 6EDC8BEB1F2C2F3300765ACC /* Common */ = {
502 isa = PBXGroup; 502 isa = PBXGroup;
503 children = ( 503 children = (
504 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */, 504 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */,
505 6EDC8BED1F2C2FB800765ACC /* Utilities.m */, 505 6EDC8BED1F2C2FB800765ACC /* Utilities.m */,
506 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */, 506 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */,
507 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */, 507 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */,
508 ); 508 );
509 name = Common; 509 name = Common;
510 sourceTree = "<group>"; 510 sourceTree = "<group>";
511 }; 511 };
512 783929CF869F5081762B3DCA /* Products */ = { 512 783929CF869F5081762B3DCA /* Products */ = {
513 isa = PBXGroup; 513 isa = PBXGroup;
514 children = ( 514 children = (
515 ); 515 );
516 name = Products; 516 name = Products;
517 sourceTree = "<group>"; 517 sourceTree = "<group>";
518 }; 518 };
519 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = { 519 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = {
520 isa = PBXGroup; 520 isa = PBXGroup;
521 children = ( 521 children = (
522 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */, 522 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */,
523 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */, 523 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */,
524 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */, 524 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */,
525 ); 525 );
526 name = ConfirmForgetPass; 526 name = ConfirmForgetPass;
527 sourceTree = "<group>"; 527 sourceTree = "<group>";
528 }; 528 };
529 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = { 529 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = {
530 isa = PBXGroup; 530 isa = PBXGroup;
531 children = ( 531 children = (
532 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */, 532 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */,
533 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */, 533 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */,
534 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */, 534 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */,
535 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */, 535 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */,
536 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */, 536 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */,
537 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */, 537 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */,
538 ); 538 );
539 name = BaseViewController; 539 name = BaseViewController;
540 sourceTree = "<group>"; 540 sourceTree = "<group>";
541 }; 541 };
542 9CBDA0FB1F2F03490055DED1 /* Register */ = { 542 9CBDA0FB1F2F03490055DED1 /* Register */ = {
543 isa = PBXGroup; 543 isa = PBXGroup;
544 children = ( 544 children = (
545 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */, 545 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */,
546 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */, 546 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */,
547 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */, 547 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */,
548 ); 548 );
549 name = Register; 549 name = Register;
550 sourceTree = "<group>"; 550 sourceTree = "<group>";
551 }; 551 };
552 DE8269E957EA47CD771BAB33 /* Pods */ = { 552 DE8269E957EA47CD771BAB33 /* Pods */ = {
553 isa = PBXGroup; 553 isa = PBXGroup;
554 children = ( 554 children = (
555 6E84E3721F27A700001EB88E /* Products */, 555 6E84E3721F27A700001EB88E /* Products */,
556 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */, 556 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */,
557 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */, 557 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */,
558 ); 558 );
559 name = Pods; 559 name = Pods;
560 sourceTree = "<group>"; 560 sourceTree = "<group>";
561 }; 561 };
562 E933E6671F3E0479002926F5 /* SeachGroup */ = { 562 E933E6671F3E0479002926F5 /* SeachGroup */ = {
563 isa = PBXGroup; 563 isa = PBXGroup;
564 children = ( 564 children = (
565 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */, 565 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */,
566 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */, 566 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */,
567 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */, 567 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */,
568 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */, 568 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */,
569 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */, 569 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */,
570 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */, 570 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */,
571 ); 571 );
572 name = SeachGroup; 572 name = SeachGroup;
573 sourceTree = "<group>"; 573 sourceTree = "<group>";
574 }; 574 };
575 E933E6751F4050E6002926F5 /* GroupDetail */ = { 575 E933E6751F4050E6002926F5 /* GroupDetail */ = {
576 isa = PBXGroup; 576 isa = PBXGroup;
577 children = ( 577 children = (
578 E933E6761F40513C002926F5 /* GroupDetailViewController.h */, 578 E933E6761F40513C002926F5 /* GroupDetailViewController.h */,
579 E933E6771F40513C002926F5 /* GroupDetailViewController.m */, 579 E933E6771F40513C002926F5 /* GroupDetailViewController.m */,
580 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */, 580 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */,
581 ); 581 );
582 name = GroupDetail; 582 name = GroupDetail;
583 sourceTree = "<group>"; 583 sourceTree = "<group>";
584 }; 584 };
585 E9373E441F35966D0059355A /* AutoTranslateView */ = { 585 E9373E441F35966D0059355A /* AutoTranslateView */ = {
586 isa = PBXGroup; 586 isa = PBXGroup;
587 children = ( 587 children = (
588 E9373E451F3596940059355A /* AutoTransLabel.h */, 588 E9373E451F3596940059355A /* AutoTransLabel.h */,
589 E9373E461F3596940059355A /* AutoTransLabel.m */, 589 E9373E461F3596940059355A /* AutoTransLabel.m */,
590 E96855081F3C444900317CEF /* AutoTransButton.h */, 590 E96855081F3C444900317CEF /* AutoTransButton.h */,
591 E96855091F3C444900317CEF /* AutoTransButton.m */, 591 E96855091F3C444900317CEF /* AutoTransButton.m */,
592 ); 592 );
593 name = AutoTranslateView; 593 name = AutoTranslateView;
594 sourceTree = "<group>"; 594 sourceTree = "<group>";
595 }; 595 };
596 E95F4CE91F475C4B00D27E80 /* CreateGroup */ = { 596 E95F4CE91F475C4B00D27E80 /* CreateGroup */ = {
597 isa = PBXGroup; 597 isa = PBXGroup;
598 children = ( 598 children = (
599 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */, 599 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */,
600 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */, 600 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */,
601 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */, 601 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */,
602 ); 602 );
603 name = CreateGroup; 603 name = CreateGroup;
604 sourceTree = "<group>"; 604 sourceTree = "<group>";
605 }; 605 };
606 E95F4CEF1F48B37100D27E80 /* MyGroup */ = { 606 E95F4CEF1F48B37100D27E80 /* MyGroup */ = {
607 isa = PBXGroup; 607 isa = PBXGroup;
608 children = ( 608 children = (
609 E95F4CF01F48B39200D27E80 /* MyGroupViewController.h */, 609 E95F4CF01F48B39200D27E80 /* MyGroupViewController.h */,
610 E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */, 610 E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */,
611 E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */, 611 E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */,
612 ); 612 );
613 name = MyGroup; 613 name = MyGroup;
614 sourceTree = "<group>"; 614 sourceTree = "<group>";
615 }; 615 };
616 E99E13A71F336F0C00C78787 /* CustomView */ = { 616 E99E13A71F336F0C00C78787 /* CustomView */ = {
617 isa = PBXGroup; 617 isa = PBXGroup;
618 children = ( 618 children = (
619 E9373E441F35966D0059355A /* AutoTranslateView */, 619 E9373E441F35966D0059355A /* AutoTranslateView */,
620 E99E13A81F336F1700C78787 /* CollectionView */, 620 E99E13A81F336F1700C78787 /* CollectionView */,
621 ); 621 );
622 name = CustomView; 622 name = CustomView;
623 sourceTree = "<group>"; 623 sourceTree = "<group>";
624 }; 624 };
625 E99E13A81F336F1700C78787 /* CollectionView */ = { 625 E99E13A81F336F1700C78787 /* CollectionView */ = {
626 isa = PBXGroup; 626 isa = PBXGroup;
627 children = ( 627 children = (
628 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */, 628 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */,
629 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */, 629 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */,
630 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */, 630 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */,
631 E99E13A91F336F3600C78787 /* CollectionView.h */, 631 E99E13A91F336F3600C78787 /* CollectionView.h */,
632 E99E13AA1F336F3600C78787 /* CollectionView.m */, 632 E99E13AA1F336F3600C78787 /* CollectionView.m */,
633 E99E13AC1F336F4500C78787 /* CollectionView.xib */, 633 E99E13AC1F336F4500C78787 /* CollectionView.xib */,
634 ); 634 );
635 name = CollectionView; 635 name = CollectionView;
636 sourceTree = "<group>"; 636 sourceTree = "<group>";
637 }; 637 };
638 /* End PBXGroup section */ 638 /* End PBXGroup section */
639 639
640 /* Begin PBXNativeTarget section */ 640 /* Begin PBXNativeTarget section */
641 6E84E3701F27A700001EB88E /* LifeLog */ = { 641 6E84E3701F27A700001EB88E /* LifeLog */ = {
642 isa = PBXNativeTarget; 642 isa = PBXNativeTarget;
643 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */; 643 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */;
644 buildPhases = ( 644 buildPhases = (
645 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */, 645 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */,
646 6E84E36D1F27A700001EB88E /* Sources */, 646 6E84E36D1F27A700001EB88E /* Sources */,
647 6E84E36E1F27A700001EB88E /* Frameworks */, 647 6E84E36E1F27A700001EB88E /* Frameworks */,
648 6E84E36F1F27A700001EB88E /* Resources */, 648 6E84E36F1F27A700001EB88E /* Resources */,
649 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */, 649 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */,
650 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */, 650 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */,
651 ); 651 );
652 buildRules = ( 652 buildRules = (
653 ); 653 );
654 dependencies = ( 654 dependencies = (
655 ); 655 );
656 name = LifeLog; 656 name = LifeLog;
657 productName = LifeLog; 657 productName = LifeLog;
658 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */; 658 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */;
659 productType = "com.apple.product-type.application"; 659 productType = "com.apple.product-type.application";
660 }; 660 };
661 6E84E3891F27A703001EB88E /* LifeLogTests */ = { 661 6E84E3891F27A703001EB88E /* LifeLogTests */ = {
662 isa = PBXNativeTarget; 662 isa = PBXNativeTarget;
663 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */; 663 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */;
664 buildPhases = ( 664 buildPhases = (
665 6E84E3861F27A703001EB88E /* Sources */, 665 6E84E3861F27A703001EB88E /* Sources */,
666 6E84E3871F27A703001EB88E /* Frameworks */, 666 6E84E3871F27A703001EB88E /* Frameworks */,
667 6E84E3881F27A703001EB88E /* Resources */, 667 6E84E3881F27A703001EB88E /* Resources */,
668 ); 668 );
669 buildRules = ( 669 buildRules = (
670 ); 670 );
671 dependencies = ( 671 dependencies = (
672 6E84E38C1F27A703001EB88E /* PBXTargetDependency */, 672 6E84E38C1F27A703001EB88E /* PBXTargetDependency */,
673 ); 673 );
674 name = LifeLogTests; 674 name = LifeLogTests;
675 productName = LifeLogTests; 675 productName = LifeLogTests;
676 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */; 676 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */;
677 productType = "com.apple.product-type.bundle.unit-test"; 677 productType = "com.apple.product-type.bundle.unit-test";
678 }; 678 };
679 6E84E3941F27A703001EB88E /* LifeLogUITests */ = { 679 6E84E3941F27A703001EB88E /* LifeLogUITests */ = {
680 isa = PBXNativeTarget; 680 isa = PBXNativeTarget;
681 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */; 681 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */;
682 buildPhases = ( 682 buildPhases = (
683 6E84E3911F27A703001EB88E /* Sources */, 683 6E84E3911F27A703001EB88E /* Sources */,
684 6E84E3921F27A703001EB88E /* Frameworks */, 684 6E84E3921F27A703001EB88E /* Frameworks */,
685 6E84E3931F27A703001EB88E /* Resources */, 685 6E84E3931F27A703001EB88E /* Resources */,
686 ); 686 );
687 buildRules = ( 687 buildRules = (
688 ); 688 );
689 dependencies = ( 689 dependencies = (
690 6E84E3971F27A703001EB88E /* PBXTargetDependency */, 690 6E84E3971F27A703001EB88E /* PBXTargetDependency */,
691 ); 691 );
692 name = LifeLogUITests; 692 name = LifeLogUITests;
693 productName = LifeLogUITests; 693 productName = LifeLogUITests;
694 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */; 694 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */;
695 productType = "com.apple.product-type.bundle.ui-testing"; 695 productType = "com.apple.product-type.bundle.ui-testing";
696 }; 696 };
697 /* End PBXNativeTarget section */ 697 /* End PBXNativeTarget section */
698 698
699 /* Begin PBXProject section */ 699 /* Begin PBXProject section */
700 6E84E3691F27A700001EB88E /* Project object */ = { 700 6E84E3691F27A700001EB88E /* Project object */ = {
701 isa = PBXProject; 701 isa = PBXProject;
702 attributes = { 702 attributes = {
703 LastUpgradeCheck = 0830; 703 LastUpgradeCheck = 0830;
704 ORGANIZATIONNAME = PhongNV; 704 ORGANIZATIONNAME = PhongNV;
705 TargetAttributes = { 705 TargetAttributes = {
706 6E84E3701F27A700001EB88E = { 706 6E84E3701F27A700001EB88E = {
707 CreatedOnToolsVersion = 8.3.3; 707 CreatedOnToolsVersion = 8.3.3;
708 DevelopmentTeam = UXU4V3VUN4; 708 DevelopmentTeam = UXU4V3VUN4;
709 ProvisioningStyle = Automatic; 709 ProvisioningStyle = Automatic;
710 }; 710 };
711 6E84E3891F27A703001EB88E = { 711 6E84E3891F27A703001EB88E = {
712 CreatedOnToolsVersion = 8.3.3; 712 CreatedOnToolsVersion = 8.3.3;
713 ProvisioningStyle = Automatic; 713 ProvisioningStyle = Automatic;
714 TestTargetID = 6E84E3701F27A700001EB88E; 714 TestTargetID = 6E84E3701F27A700001EB88E;
715 }; 715 };
716 6E84E3941F27A703001EB88E = { 716 6E84E3941F27A703001EB88E = {
717 CreatedOnToolsVersion = 8.3.3; 717 CreatedOnToolsVersion = 8.3.3;
718 ProvisioningStyle = Automatic; 718 ProvisioningStyle = Automatic;
719 TestTargetID = 6E84E3701F27A700001EB88E; 719 TestTargetID = 6E84E3701F27A700001EB88E;
720 }; 720 };
721 }; 721 };
722 }; 722 };
723 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */; 723 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */;
724 compatibilityVersion = "Xcode 3.2"; 724 compatibilityVersion = "Xcode 3.2";
725 developmentRegion = English; 725 developmentRegion = English;
726 hasScannedForEncodings = 0; 726 hasScannedForEncodings = 0;
727 knownRegions = ( 727 knownRegions = (
728 en, 728 en,
729 Base, 729 Base,
730 ); 730 );
731 mainGroup = 6E84E3681F27A700001EB88E; 731 mainGroup = 6E84E3681F27A700001EB88E;
732 productRefGroup = 783929CF869F5081762B3DCA /* Products */; 732 productRefGroup = 783929CF869F5081762B3DCA /* Products */;
733 projectDirPath = ""; 733 projectDirPath = "";
734 projectRoot = ""; 734 projectRoot = "";
735 targets = ( 735 targets = (
736 6E84E3701F27A700001EB88E /* LifeLog */, 736 6E84E3701F27A700001EB88E /* LifeLog */,
737 6E84E3891F27A703001EB88E /* LifeLogTests */, 737 6E84E3891F27A703001EB88E /* LifeLogTests */,
738 6E84E3941F27A703001EB88E /* LifeLogUITests */, 738 6E84E3941F27A703001EB88E /* LifeLogUITests */,
739 ); 739 );
740 }; 740 };
741 /* End PBXProject section */ 741 /* End PBXProject section */
742 742
743 /* Begin PBXResourcesBuildPhase section */ 743 /* Begin PBXResourcesBuildPhase section */
744 6E84E36F1F27A700001EB88E /* Resources */ = { 744 6E84E36F1F27A700001EB88E /* Resources */ = {
745 isa = PBXResourcesBuildPhase; 745 isa = PBXResourcesBuildPhase;
746 buildActionMask = 2147483647; 746 buildActionMask = 2147483647;
747 files = ( 747 files = (
748 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */, 748 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */,
749 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */, 749 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */,
750 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */, 750 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */,
751 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */, 751 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */,
752 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */, 752 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */,
753 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */, 753 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */,
754 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */, 754 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */,
755 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */, 755 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */,
756 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */, 756 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */,
757 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */, 757 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */,
758 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */, 758 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */,
759 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */, 759 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */,
760 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */, 760 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */,
761 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */, 761 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */,
762 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */, 762 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */,
763 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */, 763 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */,
764 E95F4CF41F48B39200D27E80 /* MyGroupViewController.xib in Resources */, 764 E95F4CF41F48B39200D27E80 /* MyGroupViewController.xib in Resources */,
765 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */, 765 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */,
766 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */, 766 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */,
767 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */, 767 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */,
768 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */, 768 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */,
769 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */, 769 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */,
770 ); 770 );
771 runOnlyForDeploymentPostprocessing = 0; 771 runOnlyForDeploymentPostprocessing = 0;
772 }; 772 };
773 6E84E3881F27A703001EB88E /* Resources */ = { 773 6E84E3881F27A703001EB88E /* Resources */ = {
774 isa = PBXResourcesBuildPhase; 774 isa = PBXResourcesBuildPhase;
775 buildActionMask = 2147483647; 775 buildActionMask = 2147483647;
776 files = ( 776 files = (
777 ); 777 );
778 runOnlyForDeploymentPostprocessing = 0; 778 runOnlyForDeploymentPostprocessing = 0;
779 }; 779 };
780 6E84E3931F27A703001EB88E /* Resources */ = { 780 6E84E3931F27A703001EB88E /* Resources */ = {
781 isa = PBXResourcesBuildPhase; 781 isa = PBXResourcesBuildPhase;
782 buildActionMask = 2147483647; 782 buildActionMask = 2147483647;
783 files = ( 783 files = (
784 ); 784 );
785 runOnlyForDeploymentPostprocessing = 0; 785 runOnlyForDeploymentPostprocessing = 0;
786 }; 786 };
787 /* End PBXResourcesBuildPhase section */ 787 /* End PBXResourcesBuildPhase section */
788 788
789 /* Begin PBXShellScriptBuildPhase section */ 789 /* Begin PBXShellScriptBuildPhase section */
790 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = { 790 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = {
791 isa = PBXShellScriptBuildPhase; 791 isa = PBXShellScriptBuildPhase;
792 buildActionMask = 2147483647; 792 buildActionMask = 2147483647;
793 files = ( 793 files = (
794 ); 794 );
795 inputPaths = ( 795 inputPaths = (
796 ); 796 );
797 name = "[CP] Embed Pods Frameworks"; 797 name = "[CP] Embed Pods Frameworks";
798 outputPaths = ( 798 outputPaths = (
799 ); 799 );
800 runOnlyForDeploymentPostprocessing = 0; 800 runOnlyForDeploymentPostprocessing = 0;
801 shellPath = /bin/sh; 801 shellPath = /bin/sh;
802 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-frameworks.sh\"\n"; 802 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-frameworks.sh\"\n";
803 showEnvVarsInLog = 0; 803 showEnvVarsInLog = 0;
804 }; 804 };
805 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = { 805 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = {
806 isa = PBXShellScriptBuildPhase; 806 isa = PBXShellScriptBuildPhase;
807 buildActionMask = 2147483647; 807 buildActionMask = 2147483647;
808 files = ( 808 files = (
809 ); 809 );
810 inputPaths = ( 810 inputPaths = (
811 ); 811 );
812 name = "[CP] Check Pods Manifest.lock"; 812 name = "[CP] Check Pods Manifest.lock";
813 outputPaths = ( 813 outputPaths = (
814 ); 814 );
815 runOnlyForDeploymentPostprocessing = 0; 815 runOnlyForDeploymentPostprocessing = 0;
816 shellPath = /bin/sh; 816 shellPath = /bin/sh;
817 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"; 817 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";
818 showEnvVarsInLog = 0; 818 showEnvVarsInLog = 0;
819 }; 819 };
820 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = { 820 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = {
821 isa = PBXShellScriptBuildPhase; 821 isa = PBXShellScriptBuildPhase;
822 buildActionMask = 2147483647; 822 buildActionMask = 2147483647;
823 files = ( 823 files = (
824 ); 824 );
825 inputPaths = ( 825 inputPaths = (
826 ); 826 );
827 name = "[CP] Copy Pods Resources"; 827 name = "[CP] Copy Pods Resources";
828 outputPaths = ( 828 outputPaths = (
829 ); 829 );
830 runOnlyForDeploymentPostprocessing = 0; 830 runOnlyForDeploymentPostprocessing = 0;
831 shellPath = /bin/sh; 831 shellPath = /bin/sh;
832 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-resources.sh\"\n"; 832 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-resources.sh\"\n";
833 showEnvVarsInLog = 0; 833 showEnvVarsInLog = 0;
834 }; 834 };
835 /* End PBXShellScriptBuildPhase section */ 835 /* End PBXShellScriptBuildPhase section */
836 836
837 /* Begin PBXSourcesBuildPhase section */ 837 /* Begin PBXSourcesBuildPhase section */
838 6E84E36D1F27A700001EB88E /* Sources */ = { 838 6E84E36D1F27A700001EB88E /* Sources */ = {
839 isa = PBXSourcesBuildPhase; 839 isa = PBXSourcesBuildPhase;
840 buildActionMask = 2147483647; 840 buildActionMask = 2147483647;
841 files = ( 841 files = (
842 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */, 842 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */,
843 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */, 843 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */,
844 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */, 844 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */,
845 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */, 845 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */,
846 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */, 846 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */,
847 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */, 847 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */,
848 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */, 848 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */,
849 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */, 849 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */,
850 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */, 850 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */,
851 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */, 851 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */,
852 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */, 852 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */,
853 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */, 853 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */,
854 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */, 854 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */,
855 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */, 855 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */,
856 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */, 856 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */,
857 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */, 857 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */,
858 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */, 858 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */,
859 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */, 859 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */,
860 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */, 860 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */,
861 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */, 861 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */,
862 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */, 862 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */,
863 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */, 863 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */,
864 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */, 864 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */,
865 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */, 865 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */,
866 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */, 866 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */,
867 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */, 867 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */,
868 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */, 868 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */,
869 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */, 869 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */,
870 E97588FC1F513BAD00782484 /* RankingObject.m in Sources */,
870 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */, 871 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */,
871 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */, 872 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */,
872 6E18CEDC1F2E40F50029891F /* User.m in Sources */, 873 6E18CEDC1F2E40F50029891F /* User.m in Sources */,
873 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */, 874 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */,
874 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */, 875 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */,
875 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */, 876 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */,
876 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */, 877 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */,
877 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */, 878 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */,
878 6E84E3761F27A701001EB88E /* main.m in Sources */, 879 6E84E3761F27A701001EB88E /* main.m in Sources */,
879 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */, 880 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */,
880 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */, 881 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */,
881 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */, 882 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */,
882 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */,
883 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */, 883 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */,
884 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */, 884 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */,
885 ); 885 );
886 runOnlyForDeploymentPostprocessing = 0; 886 runOnlyForDeploymentPostprocessing = 0;
887 }; 887 };
888 6E84E3861F27A703001EB88E /* Sources */ = { 888 6E84E3861F27A703001EB88E /* Sources */ = {
889 isa = PBXSourcesBuildPhase; 889 isa = PBXSourcesBuildPhase;
890 buildActionMask = 2147483647; 890 buildActionMask = 2147483647;
891 files = ( 891 files = (
892 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */, 892 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */,
893 ); 893 );
894 runOnlyForDeploymentPostprocessing = 0; 894 runOnlyForDeploymentPostprocessing = 0;
895 }; 895 };
896 6E84E3911F27A703001EB88E /* Sources */ = { 896 6E84E3911F27A703001EB88E /* Sources */ = {
897 isa = PBXSourcesBuildPhase; 897 isa = PBXSourcesBuildPhase;
898 buildActionMask = 2147483647; 898 buildActionMask = 2147483647;
899 files = ( 899 files = (
900 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */, 900 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */,
901 ); 901 );
902 runOnlyForDeploymentPostprocessing = 0; 902 runOnlyForDeploymentPostprocessing = 0;
903 }; 903 };
904 /* End PBXSourcesBuildPhase section */ 904 /* End PBXSourcesBuildPhase section */
905 905
906 /* Begin PBXTargetDependency section */ 906 /* Begin PBXTargetDependency section */
907 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = { 907 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = {
908 isa = PBXTargetDependency; 908 isa = PBXTargetDependency;
909 target = 6E84E3701F27A700001EB88E /* LifeLog */; 909 target = 6E84E3701F27A700001EB88E /* LifeLog */;
910 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */; 910 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */;
911 }; 911 };
912 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = { 912 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = {
913 isa = PBXTargetDependency; 913 isa = PBXTargetDependency;
914 target = 6E84E3701F27A700001EB88E /* LifeLog */; 914 target = 6E84E3701F27A700001EB88E /* LifeLog */;
915 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */; 915 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */;
916 }; 916 };
917 /* End PBXTargetDependency section */ 917 /* End PBXTargetDependency section */
918 918
919 /* Begin PBXVariantGroup section */ 919 /* Begin PBXVariantGroup section */
920 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = { 920 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = {
921 isa = PBXVariantGroup; 921 isa = PBXVariantGroup;
922 children = ( 922 children = (
923 6E84E3831F27A701001EB88E /* Base */, 923 6E84E3831F27A701001EB88E /* Base */,
924 ); 924 );
925 name = LaunchScreen.storyboard; 925 name = LaunchScreen.storyboard;
926 sourceTree = "<group>"; 926 sourceTree = "<group>";
927 }; 927 };
928 /* End PBXVariantGroup section */ 928 /* End PBXVariantGroup section */
929 929
930 /* Begin XCBuildConfiguration section */ 930 /* Begin XCBuildConfiguration section */
931 6E84E39C1F27A703001EB88E /* Debug */ = { 931 6E84E39C1F27A703001EB88E /* Debug */ = {
932 isa = XCBuildConfiguration; 932 isa = XCBuildConfiguration;
933 buildSettings = { 933 buildSettings = {
934 ALWAYS_SEARCH_USER_PATHS = NO; 934 ALWAYS_SEARCH_USER_PATHS = NO;
935 CLANG_ANALYZER_NONNULL = YES; 935 CLANG_ANALYZER_NONNULL = YES;
936 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 936 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
937 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 937 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
938 CLANG_CXX_LIBRARY = "libc++"; 938 CLANG_CXX_LIBRARY = "libc++";
939 CLANG_ENABLE_MODULES = YES; 939 CLANG_ENABLE_MODULES = YES;
940 CLANG_ENABLE_OBJC_ARC = YES; 940 CLANG_ENABLE_OBJC_ARC = YES;
941 CLANG_WARN_BOOL_CONVERSION = YES; 941 CLANG_WARN_BOOL_CONVERSION = YES;
942 CLANG_WARN_CONSTANT_CONVERSION = YES; 942 CLANG_WARN_CONSTANT_CONVERSION = YES;
943 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 943 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
944 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 944 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
945 CLANG_WARN_EMPTY_BODY = YES; 945 CLANG_WARN_EMPTY_BODY = YES;
946 CLANG_WARN_ENUM_CONVERSION = YES; 946 CLANG_WARN_ENUM_CONVERSION = YES;
947 CLANG_WARN_INFINITE_RECURSION = YES; 947 CLANG_WARN_INFINITE_RECURSION = YES;
948 CLANG_WARN_INT_CONVERSION = YES; 948 CLANG_WARN_INT_CONVERSION = YES;
949 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 949 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
950 CLANG_WARN_SUSPICIOUS_MOVE = YES; 950 CLANG_WARN_SUSPICIOUS_MOVE = YES;
951 CLANG_WARN_UNREACHABLE_CODE = YES; 951 CLANG_WARN_UNREACHABLE_CODE = YES;
952 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 952 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
953 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 953 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
954 COPY_PHASE_STRIP = NO; 954 COPY_PHASE_STRIP = NO;
955 DEBUG_INFORMATION_FORMAT = dwarf; 955 DEBUG_INFORMATION_FORMAT = dwarf;
956 ENABLE_STRICT_OBJC_MSGSEND = YES; 956 ENABLE_STRICT_OBJC_MSGSEND = YES;
957 ENABLE_TESTABILITY = YES; 957 ENABLE_TESTABILITY = YES;
958 GCC_C_LANGUAGE_STANDARD = gnu99; 958 GCC_C_LANGUAGE_STANDARD = gnu99;
959 GCC_DYNAMIC_NO_PIC = NO; 959 GCC_DYNAMIC_NO_PIC = NO;
960 GCC_NO_COMMON_BLOCKS = YES; 960 GCC_NO_COMMON_BLOCKS = YES;
961 GCC_OPTIMIZATION_LEVEL = 0; 961 GCC_OPTIMIZATION_LEVEL = 0;
962 GCC_PREPROCESSOR_DEFINITIONS = ( 962 GCC_PREPROCESSOR_DEFINITIONS = (
963 "DEBUG=1", 963 "DEBUG=1",
964 "$(inherited)", 964 "$(inherited)",
965 ); 965 );
966 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 966 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
967 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 967 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
968 GCC_WARN_UNDECLARED_SELECTOR = YES; 968 GCC_WARN_UNDECLARED_SELECTOR = YES;
969 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 969 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
970 GCC_WARN_UNUSED_FUNCTION = YES; 970 GCC_WARN_UNUSED_FUNCTION = YES;
971 GCC_WARN_UNUSED_VARIABLE = YES; 971 GCC_WARN_UNUSED_VARIABLE = YES;
972 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 972 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
973 MTL_ENABLE_DEBUG_INFO = YES; 973 MTL_ENABLE_DEBUG_INFO = YES;
974 ONLY_ACTIVE_ARCH = YES; 974 ONLY_ACTIVE_ARCH = YES;
975 SDKROOT = iphoneos; 975 SDKROOT = iphoneos;
976 TARGETED_DEVICE_FAMILY = "1,2"; 976 TARGETED_DEVICE_FAMILY = "1,2";
977 }; 977 };
978 name = Debug; 978 name = Debug;
979 }; 979 };
980 6E84E39D1F27A703001EB88E /* Release */ = { 980 6E84E39D1F27A703001EB88E /* Release */ = {
981 isa = XCBuildConfiguration; 981 isa = XCBuildConfiguration;
982 buildSettings = { 982 buildSettings = {
983 ALWAYS_SEARCH_USER_PATHS = NO; 983 ALWAYS_SEARCH_USER_PATHS = NO;
984 CLANG_ANALYZER_NONNULL = YES; 984 CLANG_ANALYZER_NONNULL = YES;
985 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 985 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
986 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 986 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
987 CLANG_CXX_LIBRARY = "libc++"; 987 CLANG_CXX_LIBRARY = "libc++";
988 CLANG_ENABLE_MODULES = YES; 988 CLANG_ENABLE_MODULES = YES;
989 CLANG_ENABLE_OBJC_ARC = YES; 989 CLANG_ENABLE_OBJC_ARC = YES;
990 CLANG_WARN_BOOL_CONVERSION = YES; 990 CLANG_WARN_BOOL_CONVERSION = YES;
991 CLANG_WARN_CONSTANT_CONVERSION = YES; 991 CLANG_WARN_CONSTANT_CONVERSION = YES;
992 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 992 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
993 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 993 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
994 CLANG_WARN_EMPTY_BODY = YES; 994 CLANG_WARN_EMPTY_BODY = YES;
995 CLANG_WARN_ENUM_CONVERSION = YES; 995 CLANG_WARN_ENUM_CONVERSION = YES;
996 CLANG_WARN_INFINITE_RECURSION = YES; 996 CLANG_WARN_INFINITE_RECURSION = YES;
997 CLANG_WARN_INT_CONVERSION = YES; 997 CLANG_WARN_INT_CONVERSION = YES;
998 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 998 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
999 CLANG_WARN_SUSPICIOUS_MOVE = YES; 999 CLANG_WARN_SUSPICIOUS_MOVE = YES;
1000 CLANG_WARN_UNREACHABLE_CODE = YES; 1000 CLANG_WARN_UNREACHABLE_CODE = YES;
1001 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 1001 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
1002 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1002 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1003 COPY_PHASE_STRIP = NO; 1003 COPY_PHASE_STRIP = NO;
1004 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 1004 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
1005 ENABLE_NS_ASSERTIONS = NO; 1005 ENABLE_NS_ASSERTIONS = NO;
1006 ENABLE_STRICT_OBJC_MSGSEND = YES; 1006 ENABLE_STRICT_OBJC_MSGSEND = YES;
1007 GCC_C_LANGUAGE_STANDARD = gnu99; 1007 GCC_C_LANGUAGE_STANDARD = gnu99;
1008 GCC_NO_COMMON_BLOCKS = YES; 1008 GCC_NO_COMMON_BLOCKS = YES;
1009 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 1009 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
1010 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 1010 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
1011 GCC_WARN_UNDECLARED_SELECTOR = YES; 1011 GCC_WARN_UNDECLARED_SELECTOR = YES;
1012 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 1012 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
1013 GCC_WARN_UNUSED_FUNCTION = YES; 1013 GCC_WARN_UNUSED_FUNCTION = YES;
1014 GCC_WARN_UNUSED_VARIABLE = YES; 1014 GCC_WARN_UNUSED_VARIABLE = YES;
1015 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 1015 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
1016 MTL_ENABLE_DEBUG_INFO = NO; 1016 MTL_ENABLE_DEBUG_INFO = NO;
1017 SDKROOT = iphoneos; 1017 SDKROOT = iphoneos;
1018 TARGETED_DEVICE_FAMILY = "1,2"; 1018 TARGETED_DEVICE_FAMILY = "1,2";
1019 VALIDATE_PRODUCT = YES; 1019 VALIDATE_PRODUCT = YES;
1020 }; 1020 };
1021 name = Release; 1021 name = Release;
1022 }; 1022 };
1023 6E84E39F1F27A703001EB88E /* Debug */ = { 1023 6E84E39F1F27A703001EB88E /* Debug */ = {
1024 isa = XCBuildConfiguration; 1024 isa = XCBuildConfiguration;
1025 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */; 1025 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */;
1026 buildSettings = { 1026 buildSettings = {
1027 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1027 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1028 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1028 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1029 DEVELOPMENT_TEAM = ""; 1029 DEVELOPMENT_TEAM = "";
1030 INFOPLIST_FILE = LifeLog/Info.plist; 1030 INFOPLIST_FILE = LifeLog/Info.plist;
1031 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 1031 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1032 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1032 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1033 OTHER_LDFLAGS = ( 1033 OTHER_LDFLAGS = (
1034 "$(inherited)", 1034 "$(inherited)",
1035 "-framework", 1035 "-framework",
1036 "\"CircleProgressBar\"", 1036 "\"CircleProgressBar\"",
1037 "-all_load", 1037 "-all_load",
1038 "-ObjC", 1038 "-ObjC",
1039 ); 1039 );
1040 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 1040 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
1041 PRODUCT_NAME = "$(TARGET_NAME)"; 1041 PRODUCT_NAME = "$(TARGET_NAME)";
1042 PROVISIONING_PROFILE = ""; 1042 PROVISIONING_PROFILE = "";
1043 PROVISIONING_PROFILE_SPECIFIER = ""; 1043 PROVISIONING_PROFILE_SPECIFIER = "";
1044 }; 1044 };
1045 name = Debug; 1045 name = Debug;
1046 }; 1046 };
1047 6E84E3A01F27A703001EB88E /* Release */ = { 1047 6E84E3A01F27A703001EB88E /* Release */ = {
1048 isa = XCBuildConfiguration; 1048 isa = XCBuildConfiguration;
1049 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */; 1049 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */;
1050 buildSettings = { 1050 buildSettings = {
1051 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1051 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1052 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1052 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1053 DEVELOPMENT_TEAM = ""; 1053 DEVELOPMENT_TEAM = "";
1054 INFOPLIST_FILE = LifeLog/Info.plist; 1054 INFOPLIST_FILE = LifeLog/Info.plist;
1055 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 1055 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1056 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1056 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1057 OTHER_LDFLAGS = ( 1057 OTHER_LDFLAGS = (
1058 "$(inherited)", 1058 "$(inherited)",
1059 "-framework", 1059 "-framework",
1060 "\"CircleProgressBar\"", 1060 "\"CircleProgressBar\"",
1061 "-all_load", 1061 "-all_load",
1062 "-ObjC", 1062 "-ObjC",
1063 ); 1063 );
1064 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 1064 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
1065 PRODUCT_NAME = "$(TARGET_NAME)"; 1065 PRODUCT_NAME = "$(TARGET_NAME)";
1066 PROVISIONING_PROFILE = ""; 1066 PROVISIONING_PROFILE = "";
1067 PROVISIONING_PROFILE_SPECIFIER = ""; 1067 PROVISIONING_PROFILE_SPECIFIER = "";
1068 }; 1068 };
1069 name = Release; 1069 name = Release;
1070 }; 1070 };
1071 6E84E3A21F27A703001EB88E /* Debug */ = { 1071 6E84E3A21F27A703001EB88E /* Debug */ = {
1072 isa = XCBuildConfiguration; 1072 isa = XCBuildConfiguration;
1073 buildSettings = { 1073 buildSettings = {
1074 BUNDLE_LOADER = "$(TEST_HOST)"; 1074 BUNDLE_LOADER = "$(TEST_HOST)";
1075 INFOPLIST_FILE = LifeLogTests/Info.plist; 1075 INFOPLIST_FILE = LifeLogTests/Info.plist;
1076 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1076 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1077 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 1077 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
1078 PRODUCT_NAME = "$(TARGET_NAME)"; 1078 PRODUCT_NAME = "$(TARGET_NAME)";
1079 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 1079 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
1080 }; 1080 };
1081 name = Debug; 1081 name = Debug;
1082 }; 1082 };
1083 6E84E3A31F27A703001EB88E /* Release */ = { 1083 6E84E3A31F27A703001EB88E /* Release */ = {
1084 isa = XCBuildConfiguration; 1084 isa = XCBuildConfiguration;
1085 buildSettings = { 1085 buildSettings = {
1086 BUNDLE_LOADER = "$(TEST_HOST)"; 1086 BUNDLE_LOADER = "$(TEST_HOST)";
1087 INFOPLIST_FILE = LifeLogTests/Info.plist; 1087 INFOPLIST_FILE = LifeLogTests/Info.plist;
1088 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1088 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1089 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 1089 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
1090 PRODUCT_NAME = "$(TARGET_NAME)"; 1090 PRODUCT_NAME = "$(TARGET_NAME)";
1091 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 1091 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
1092 }; 1092 };
1093 name = Release; 1093 name = Release;
1094 }; 1094 };
1095 6E84E3A51F27A703001EB88E /* Debug */ = { 1095 6E84E3A51F27A703001EB88E /* Debug */ = {
1096 isa = XCBuildConfiguration; 1096 isa = XCBuildConfiguration;
1097 buildSettings = { 1097 buildSettings = {
1098 INFOPLIST_FILE = LifeLogUITests/Info.plist; 1098 INFOPLIST_FILE = LifeLogUITests/Info.plist;
1099 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1099 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1100 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 1100 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
1101 PRODUCT_NAME = "$(TARGET_NAME)"; 1101 PRODUCT_NAME = "$(TARGET_NAME)";
1102 TEST_TARGET_NAME = LifeLog; 1102 TEST_TARGET_NAME = LifeLog;
1103 }; 1103 };
1104 name = Debug; 1104 name = Debug;
1105 }; 1105 };
1106 6E84E3A61F27A703001EB88E /* Release */ = { 1106 6E84E3A61F27A703001EB88E /* Release */ = {
1107 isa = XCBuildConfiguration; 1107 isa = XCBuildConfiguration;
1108 buildSettings = { 1108 buildSettings = {
1109 INFOPLIST_FILE = LifeLogUITests/Info.plist; 1109 INFOPLIST_FILE = LifeLogUITests/Info.plist;
1110 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1110 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1111 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 1111 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
1112 PRODUCT_NAME = "$(TARGET_NAME)"; 1112 PRODUCT_NAME = "$(TARGET_NAME)";
1113 TEST_TARGET_NAME = LifeLog; 1113 TEST_TARGET_NAME = LifeLog;
1114 }; 1114 };
1115 name = Release; 1115 name = Release;
1116 }; 1116 };
1117 /* End XCBuildConfiguration section */ 1117 /* End XCBuildConfiguration section */
1118 1118
1119 /* Begin XCConfigurationList section */ 1119 /* Begin XCConfigurationList section */
1120 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = { 1120 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = {
1121 isa = XCConfigurationList; 1121 isa = XCConfigurationList;
1122 buildConfigurations = ( 1122 buildConfigurations = (
1123 6E84E39C1F27A703001EB88E /* Debug */, 1123 6E84E39C1F27A703001EB88E /* Debug */,
1124 6E84E39D1F27A703001EB88E /* Release */, 1124 6E84E39D1F27A703001EB88E /* Release */,
1125 ); 1125 );
1126 defaultConfigurationIsVisible = 0; 1126 defaultConfigurationIsVisible = 0;
1127 defaultConfigurationName = Release; 1127 defaultConfigurationName = Release;
1128 }; 1128 };
1129 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = { 1129 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = {
1130 isa = XCConfigurationList; 1130 isa = XCConfigurationList;
1131 buildConfigurations = ( 1131 buildConfigurations = (
1132 6E84E39F1F27A703001EB88E /* Debug */, 1132 6E84E39F1F27A703001EB88E /* Debug */,
1133 6E84E3A01F27A703001EB88E /* Release */, 1133 6E84E3A01F27A703001EB88E /* Release */,
1134 ); 1134 );
1135 defaultConfigurationIsVisible = 0; 1135 defaultConfigurationIsVisible = 0;
1136 defaultConfigurationName = Release; 1136 defaultConfigurationName = Release;
1137 }; 1137 };
1138 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = { 1138 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = {
1139 isa = XCConfigurationList; 1139 isa = XCConfigurationList;
1140 buildConfigurations = ( 1140 buildConfigurations = (
1141 6E84E3A21F27A703001EB88E /* Debug */, 1141 6E84E3A21F27A703001EB88E /* Debug */,
1142 6E84E3A31F27A703001EB88E /* Release */, 1142 6E84E3A31F27A703001EB88E /* Release */,
1143 ); 1143 );
1144 defaultConfigurationIsVisible = 0; 1144 defaultConfigurationIsVisible = 0;
1145 defaultConfigurationName = Release; 1145 defaultConfigurationName = Release;
1146 }; 1146 };
1147 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = { 1147 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = {
1148 isa = XCConfigurationList; 1148 isa = XCConfigurationList;
1149 buildConfigurations = ( 1149 buildConfigurations = (
1150 6E84E3A51F27A703001EB88E /* Debug */, 1150 6E84E3A51F27A703001EB88E /* Debug */,
1151 6E84E3A61F27A703001EB88E /* Release */, 1151 6E84E3A61F27A703001EB88E /* Release */,
1152 ); 1152 );
1153 defaultConfigurationIsVisible = 0; 1153 defaultConfigurationIsVisible = 0;
1154 defaultConfigurationName = Release; 1154 defaultConfigurationName = Release;
LifeLog/LifeLog/BaseTableViewController.m
1 // 1 //
2 // BaseTableViewController.m 2 // BaseTableViewController.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/11/17. 5 // Created by nvtu on 8/11/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "BaseTableViewController.h" 9 #import "BaseTableViewController.h"
10 #import "Utilities.h" 10 #import "Utilities.h"
11 11
12 @interface BaseTableViewController () 12 @interface BaseTableViewController ()
13 13
14 @end 14 @end
15 15
16 @implementation BaseTableViewController 16 @implementation BaseTableViewController
17 17
18 - (void)viewDidLoad { 18 - (void)viewDidLoad {
19 [super viewDidLoad]; 19 [super viewDidLoad];
20 _firstTime = false; 20 _firstTime = false;
21 _curPage = 1; 21 _curPage = 1;
22 _isEndOfResult = false; 22 _isEndOfResult = false;
23 _isDisableLoadMore = false; 23 _isDisableLoadMore = false;
24 _curDataList = [[NSMutableArray alloc] init]; 24 _curDataList = [[NSMutableArray alloc] init];
25 self.refreshControl = [[UIRefreshControl alloc] init]; 25 self.refreshControl = [[UIRefreshControl alloc] init];
26 [self.refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged]; 26 [self.refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged];
27 [self.tableBase addSubview:self.refreshControl]; 27 [self.tableBase addSubview:self.refreshControl];
28 // Do any additional setup after loading the view. 28 // Do any additional setup after loading the view.
29 } 29 }
30 30
31 - (void)didReceiveMemoryWarning { 31 - (void)didReceiveMemoryWarning {
32 [super didReceiveMemoryWarning]; 32 [super didReceiveMemoryWarning];
33 // Dispose of any resources that can be recreated. 33 // Dispose of any resources that can be recreated.
34 } 34 }
35 35
36 -(void) callRequestToUpdateData { 36 -(void) callRequestToUpdateData {
37 _isLoading = true; 37 _isLoading = true;
38 } 38 }
39 39
40 -(void) resetData { 40 -(void) resetData {
41 _isLoading = false; 41 _isLoading = false;
42 _isEndOfResult = false; 42 _isEndOfResult = false;
43 _firstTime = false; 43 _firstTime = false;
44 _curPage = 1; 44 _curPage = 1;
45 [_curDataList removeAllObjects]; 45 [_curDataList removeAllObjects];
46 [self.tableBase reloadData]; 46 [self.tableBase reloadData];
47 [self callRequestToUpdateData]; 47 [self callRequestToUpdateData];
48 } 48 }
49 49
50 -(void) refreshTable { 50 -(void) refreshTable {
51 [self resetData]; 51 [self resetData];
52 } 52 }
53 53
54 -(void) updateTableData : (NSArray *) array error: (NSError *) error { 54 -(void) updateTableData : (NSArray *) array error: (NSError *) error {
55 BaseTableViewController __weak *weakSelf = self; 55 BaseTableViewController __weak *weakSelf = self;
56 _isLoading = false; 56 _isLoading = false;
57 _firstTime = true; 57 _firstTime = true;
58 if(self.refreshControl != nil) { 58 if(self.refreshControl != nil) {
59 dispatch_async(dispatch_get_main_queue(), ^{ 59 dispatch_async(dispatch_get_main_queue(), ^{
60 [self.refreshControl endRefreshing]; 60 [self.refreshControl endRefreshing];
61 }); 61 });
62 } 62 }
63 if(error == nil) { 63 if(error == nil) {
64 if(_curPage == 1) {
65 [_curDataList removeAllObjects];
66 }
64 if(array.count != 0) { 67 if(array.count != 0) {
65 if(_curPage == 1) {
66 [_curDataList removeAllObjects];
67 }
68 [_curDataList addObjectsFromArray:array]; 68 [_curDataList addObjectsFromArray:array];
69 dispatch_async(dispatch_get_main_queue(), ^{ 69 dispatch_async(dispatch_get_main_queue(), ^{
70 [weakSelf.tableBase reloadData]; 70 [weakSelf.tableBase reloadData];
71 }); 71 });
72 } 72 }
73 else { 73 else {
74 if(_curPage != 1) { 74 if(_curPage != 1) {
75 _isEndOfResult = true; 75 _isEndOfResult = true;
76 _curPage -= 1; 76 _curPage -= 1;
77 } 77 }
78 else { 78 else {
79 dispatch_async(dispatch_get_main_queue(), ^{ 79 dispatch_async(dispatch_get_main_queue(), ^{
80 [weakSelf.tableBase reloadData]; 80 [weakSelf.tableBase reloadData];
81 }); 81 });
82 } 82 }
83 } 83 }
84 } 84 }
85 else { 85 else {
86 _curPage = MAX(1, _curPage - 1); 86 _curPage = MAX(1, _curPage - 1);
87 dispatch_async(dispatch_get_main_queue(), ^{ 87 dispatch_async(dispatch_get_main_queue(), ^{
88 NSString *message = [error.userInfo objectForKey:@"message"]; 88 NSString *message = [error.userInfo objectForKey:@"message"];
89 [Utilities showErrorMessage:message withViewController:weakSelf]; 89 [Utilities showErrorMessage:message withViewController:weakSelf];
90 }); 90 });
91 } 91 }
92 } 92 }
93 93
94 #pragma mark UITableView Delegate 94 #pragma mark UITableView Delegate
95 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { 95 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
96 if((_curDataList == nil || _curDataList.count == 0) && _firstTime) { 96 if((_curDataList == nil || _curDataList.count == 0) && _firstTime) {
97 UILabel * noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height)]; 97 UILabel * noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height)];
98 noDataLabel.text = @"No data available"; 98 noDataLabel.text = @"No data available";
99 noDataLabel.backgroundColor = [UIColor clearColor]; 99 noDataLabel.backgroundColor = [UIColor clearColor];
100 noDataLabel.textColor = [UIColor whiteColor]; 100 noDataLabel.textColor = [UIColor whiteColor];
101 noDataLabel.textAlignment = NSTextAlignmentCenter; 101 noDataLabel.textAlignment = NSTextAlignmentCenter;
102 tableView.backgroundView = noDataLabel; 102 tableView.backgroundView = noDataLabel;
103 tableView.backgroundView.layer.zPosition -= 1; 103 tableView.backgroundView.layer.zPosition -= 1;
104 return 0; 104 return 0;
105 } 105 }
106 tableView.backgroundView = nil; 106 tableView.backgroundView = nil;
107 return 1; 107 return 1;
108 } 108 }
109 109
110 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 110 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
111 return _curDataList.count; 111 return _curDataList.count;
112 } 112 }
113 113
114 - (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 114 - (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
115 NSInteger lastRowIndex = [tableView numberOfRowsInSection:0] - 1; 115 NSInteger lastRowIndex = [tableView numberOfRowsInSection:0] - 1;
116 if (indexPath.row == lastRowIndex) { 116 if (indexPath.row == lastRowIndex) {
117 // This is the last cell 117 // This is the last cell
118 if(!_isLoading && !_isDisableLoadMore) { 118 if(!_isLoading && !_isDisableLoadMore) {
119 _curPage += 1; 119 _curPage += 1;
120 [self callRequestToUpdateData]; 120 [self callRequestToUpdateData];
121 } 121 }
122 } 122 }
LifeLog/LifeLog/Entities.h
1 // 1 //
2 // Entities.h 2 // Entities.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 #ifndef Entities_h 9 #ifndef Entities_h
10 #define Entities_h 10 #define Entities_h
11 11
12 #import <MBProgressHUD/MBProgressHUD.h> 12 #import <MBProgressHUD/MBProgressHUD.h>
13 13
14 #import "MemberObject.h" 14 #import "MemberObject.h"
15 #import "GroupObject.h" 15 #import "GroupObject.h"
16 #import "TweetObject.h" 16 #import "TweetObject.h"
17 #import "HistoryGraphObject.h"
18 #import "HistoryObject.h" 17 #import "HistoryObject.h"
19 #import "User.h" 18 #import "User.h"
20 #import "TopObject.h" 19 #import "TopObject.h"
20 #import "RankingObject.h"
21 21
22 #endif /* Entities_h */ 22 #endif /* Entities_h */
LifeLog/LifeLog/HistoryGraphObject.h
1 // File was deleted
2 // HistoryGraphObject.h
3 // LifeLog
4 //
5 // Created by nvtu on 8/5/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import <Foundation/Foundation.h>
10
11 @interface HistoryGraphObject : NSObject
12
13 @property (nonatomic, strong) NSMutableArray * arrayTime;
14 @property (nonatomic, strong) NSMutableArray * arrayStep;
15
16 -(id) initWithData : (NSDictionary *) dict;
17
18 @end
19 1 //
LifeLog/LifeLog/HistoryGraphObject.m
1 // File was deleted
2 // HistoryGraphObject.m
3 // LifeLog
4 //
5 // Created by nvtu on 8/5/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import "HistoryGraphObject.h"
10
11 @implementation HistoryGraphObject
12
13 -(id) initWithData : (NSDictionary *) dict {
14
15 if([dict objectForKey:@"data"] != nil) {
16 self.arrayStep = [[NSMutableArray alloc] init];
17 self.arrayTime = [[NSMutableArray alloc] init];
18 NSArray *arrayGraph = dict[@"data"];
19 for(NSDictionary *sub in arrayGraph) {
20 if([sub objectForKey:@"hour"] != nil && [sub objectForKey:@"step"] != nil) {
21 [self.arrayTime addObject:[sub objectForKey:@"hour"]];
22 [self.arrayStep addObject:[sub objectForKey:@"step"]];
23 }
24 }
25 }
26 else {
27 return nil;
28 }
29 return self;
30 }
31
32
33 @end
34 1 //
LifeLog/LifeLog/RankingObject.h
File was created 1 //
2 // RankingObject.h
3 // LifeLog
4 //
5 // Created by nvtu on 8/26/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import <Foundation/Foundation.h>
10
11 @interface RankingObject : NSObject
12
13 @property (nonatomic) int userID;
14 @property (nonatomic) int rank;
15 @property (nonatomic) int steps;
16 @property (nonatomic) int time;
17 @property (nonatomic) float distance;
18
19 @property (nonatomic, strong) NSString * userName;
20 @property (nonatomic, strong) NSString * avatar;
21
22 -(id) initWithData : (NSDictionary *) dict;
23
24 @end
25
LifeLog/LifeLog/RankingObject.m
File was created 1 //
2 // RankingObject.m
3 // LifeLog
4 //
5 // Created by nvtu on 8/26/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import "RankingObject.h"
10
11 @implementation RankingObject
12
13 -(id) initWithData : (NSDictionary *) dict {
14 if([dict objectForKey:@"user_id"] != nil) {
15 self.userID = [dict[@"user_id"] intValue];
16 }
17 if([dict objectForKey:@"rank"] != nil) {
18 self.rank = [dict[@"rank"] intValue];
19 }
20 if([dict objectForKey:@"steps"] != nil) {
21 self.steps = [dict[@"steps"] intValue];
22 }
23 if([dict objectForKey:@"distance"] != nil) {
24 self.distance = [dict[@"distance"] floatValue];
25 }
26 if([dict objectForKey:@"time"] != nil) {
27 self.time = [dict[@"time"] intValue];
28 }
29 if([dict objectForKey:@"username"] != nil) {
30 self.userName = dict[@"username"];
31 }
32 if([dict objectForKey:@"profile_image"] != nil) {
33 self.avatar = dict[@"profile_image"];
34 }
35 return self;
36 }
37
38 @end
39
LifeLog/LifeLog/RankingTableViewCell.h
1 // 1 //
2 // RankingTableViewCell.h 2 // RankingTableViewCell.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/8/17. 5 // Created by nvtu on 8/8/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import <UIKit/UIKit.h> 9 #import <UIKit/UIKit.h>
10 #import "RankingObject.h"
10 11
11 @interface RankingTableViewCell : UITableViewCell 12 @interface RankingTableViewCell : UITableViewCell
12 @property (weak, nonatomic) IBOutlet UILabel *lblIndex; 13 @property (weak, nonatomic) IBOutlet UILabel *lblIndex;
13 @property (weak, nonatomic) IBOutlet UILabel *lblName; 14 @property (weak, nonatomic) IBOutlet UILabel *lblName;
14 @property (weak, nonatomic) IBOutlet UILabel *lblStep; 15 @property (weak, nonatomic) IBOutlet UILabel *lblStep;
15 @property (weak, nonatomic) IBOutlet UILabel *lblTime; 16 @property (weak, nonatomic) IBOutlet UILabel *lblTime;
16 @property (weak, nonatomic) IBOutlet UILabel *lblDistance; 17 @property (weak, nonatomic) IBOutlet UILabel *lblDistance;
17 18
18 @property (weak, nonatomic) IBOutlet UIImageView *imgAvatar; 19 @property (weak, nonatomic) IBOutlet UIImageView *imgAvatar;
20
21 -(void) setRankingData : (RankingObject *) object;
22
19 @end 23 @end
20 24
LifeLog/LifeLog/RankingTableViewCell.m
1 // 1 //
2 // RankingTableViewCell.m 2 // RankingTableViewCell.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/8/17. 5 // Created by nvtu on 8/8/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "RankingTableViewCell.h" 9 #import "RankingTableViewCell.h"
10 #import <SDWebImage/UIImageView+WebCache.h>
10 11
12 #import "Utilities.h"
11 @implementation RankingTableViewCell 13 @implementation RankingTableViewCell
12 14
13 - (void)awakeFromNib { 15 - (void)awakeFromNib {
14 [super awakeFromNib]; 16 [super awakeFromNib];
15 // Initialization code 17 // Initialization code
16 } 18 }
17 19
18 - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 20 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
19 [super setSelected:selected animated:animated]; 21 [super setSelected:selected animated:animated];
20 22
21 // Configure the view for the selected state 23 // Configure the view for the selected state
22 } 24 }
23 25
26 -(void) setRankingData : (RankingObject *) object {
27 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
28 [self.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
29 }
30 else {
31 [self.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
32 }
33 self.lblIndex.text = [NSString stringWithFormat:@"%d", object.rank];
34 self.lblName.text = object.userName;
35 self.lblDistance.text = [NSString stringWithFormat:@"%0.1f km", object.distance];
36 self.lblStep.text = [NSString stringWithFormat:@"%d ๆญฉ", object.steps];
37 self.lblTime.text = [Utilities convertSecondToShortTime:object.time];
38 }
24 @end 39 @end
25 40
LifeLog/LifeLog/RankingViewController.h
1 // 1 //
2 // RankingViewController.h 2 // RankingViewController.h
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/25/17. 5 // Created by Nguyen Van Phong on 7/25/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import <UIKit/UIKit.h> 9 #import <UIKit/UIKit.h>
10 10
11 #import "BaseTableViewController.h"
11 #import "CollectionView.h" 12 #import "CollectionView.h"
12 13
13 @interface RankingViewController : UIViewController 14 @interface RankingViewController : BaseTableViewController {
15 NSDate * _startDate;
16 NSDate * _endDate;
17 }
14 18
15 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionTime; 19 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionTime;
16 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionMode; 20 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionMode;
17 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionType; 21 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionType;
18 22 @property (weak, nonatomic) IBOutlet UILabel *lblDateTime;
19 @property (weak, nonatomic) IBOutlet UITableView *tableRank;
20 23
21 - (IBAction)clickButton:(UIButton *)sender; 24 - (IBAction)clickButton:(UIButton *)sender;
22 @end 25 @end
LifeLog/LifeLog/RankingViewController.m
1 // 1 //
2 // RankingViewController.m 2 // RankingViewController.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/25/17. 5 // Created by Nguyen Van Phong on 7/25/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "RankingViewController.h" 9 #import "RankingViewController.h"
10 #import "RankingTableViewCell.h" 10 #import "RankingTableViewCell.h"
11 11
12 #import "ServerAPI.h"
13 #import "Utilities.h"
14
12 @interface RankingViewController () 15 @interface RankingViewController ()
13 16
14 @end 17 @end
15 18
16 @implementation RankingViewController 19 @implementation RankingViewController
17 20
18 - (void)viewDidLoad { 21 - (void)viewDidLoad {
19 [super viewDidLoad]; 22 [super viewDidLoad];
20 // Do any additional setup after loading the view from its nib. 23 // Do any additional setup after loading the view from its nib.
21 self.title = NSLocalizedString(@"lifelog.rank.title", nil); 24 self.title = NSLocalizedString(@"lifelog.rank.title", nil);
22 25
23 [self setupView]; 26 [self setupView];
24 27
28 _startDate = [NSDate date];
29 _endDate = _startDate;
30 self.lblDateTime.text = [Utilities stringFromDate:_endDate withFormat:@"YYYYๅนดMMๆœˆddๆ—ฅ EEEE" locale:@"ja_JP"];
31
25 //register nib for table view 32 //register nib for table view
26 [self.tableRank registerNib:[UINib nibWithNibName:@"RankingTableViewCell" bundle:nil] forCellReuseIdentifier:@"RankCell"]; 33 [self.tableBase registerNib:[UINib nibWithNibName:@"RankingTableViewCell" bundle:nil] forCellReuseIdentifier:@"RankCell"];
34
35 [self callRequestToUpdateData];
27 } 36 }
28 37
29 - (void)didReceiveMemoryWarning { 38 - (void)didReceiveMemoryWarning {
30 [super didReceiveMemoryWarning]; 39 [super didReceiveMemoryWarning];
31 // Dispose of any resources that can be recreated. 40 // Dispose of any resources that can be recreated.
32 } 41 }
33 42
34 #pragma mark Setup and Update View 43 #pragma mark Setup and Update View
35 44
36 - (void)setupView { 45 - (void)setupView {
37 NSArray *timeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.rank.time.1", nil), NSLocalizedString(@"lifelog.rank.time.2", nil), NSLocalizedString(@"lifelog.rank.time.3", nil), NSLocalizedString(@"lifelog.rank.time.4", nil), nil]; 46 NSArray *timeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.rank.time.1", nil), NSLocalizedString(@"lifelog.rank.time.2", nil), NSLocalizedString(@"lifelog.rank.time.3", nil), NSLocalizedString(@"lifelog.rank.time.4", nil), nil];
38 [self.viewCollectionTime setButtonNumber:timeTitle.count]; 47 [self.viewCollectionTime setButtonNumber:timeTitle.count];
39 [self.viewCollectionTime setSpacing:1]; 48 [self.viewCollectionTime setSpacing:1];
40 [self.viewCollectionTime setArrayTitle:timeTitle]; 49 [self.viewCollectionTime setArrayTitle:timeTitle];
41 self.viewCollectionTime.changeCurrentIndex = ^(int index){ 50 self.viewCollectionTime.changeCurrentIndex = ^(int index){
42 [self callRequestToUpdateData]; 51 [self changeDate];
43 }; 52 };
44 53
45 NSArray *modeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.rank.mode.1", nil), NSLocalizedString(@"lifelog.rank.mode.2", nil), NSLocalizedString(@"lifelog.rank.mode.3", nil), NSLocalizedString(@"lifelog.rank.mode.4", nil), nil]; 54 NSArray *modeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.rank.mode.1", nil), NSLocalizedString(@"lifelog.rank.mode.2", nil), NSLocalizedString(@"lifelog.rank.mode.3", nil), NSLocalizedString(@"lifelog.rank.mode.4", nil), nil];
46 [self.viewCollectionMode setButtonNumber:modeTitle.count]; 55 [self.viewCollectionMode setButtonNumber:modeTitle.count];
47 [self.viewCollectionMode setSpacing:1]; 56 [self.viewCollectionMode setSpacing:1];
48 [self.viewCollectionMode setArrayTitle:modeTitle]; 57 [self.viewCollectionMode setArrayTitle:modeTitle];
49 self.viewCollectionMode.changeCurrentIndex = ^(int index){ 58 self.viewCollectionMode.changeCurrentIndex = ^(int index){
50 [self callRequestToUpdateData]; 59 [self callRequestToUpdateData];
51 }; 60 };
52 61
53 NSArray *typeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.rank.type.1", nil), NSLocalizedString(@"lifelog.rank.type.2", nil), NSLocalizedString(@"lifelog.rank.type.3", nil), NSLocalizedString(@"lifelog.rank.type.4", nil), nil]; 62 NSArray *typeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.rank.type.1", nil), NSLocalizedString(@"lifelog.rank.type.2", nil), NSLocalizedString(@"lifelog.rank.type.3", nil), NSLocalizedString(@"lifelog.rank.type.4", nil), nil];
54 [self.viewCollectionType setButtonNumber:typeTitle.count]; 63 [self.viewCollectionType setButtonNumber:typeTitle.count];
55 [self.viewCollectionType setSpacing:1]; 64 [self.viewCollectionType setSpacing:1];
56 [self.viewCollectionType setArrayTitle:typeTitle]; 65 [self.viewCollectionType setArrayTitle:typeTitle];
57 self.viewCollectionMode.changeCurrentIndex = ^(int index){ 66 self.viewCollectionMode.changeCurrentIndex = ^(int index){
58 [self callRequestToUpdateData]; 67 [self callRequestToUpdateData];
59 }; 68 };
60 } 69 }
61 70
62 71
63 #pragma mark IBAction function 72 #pragma mark IBAction function
64 73
65 - (IBAction)clickButton:(UIButton *)sender { 74 - (IBAction)clickButton:(UIButton *)sender {
66 } 75 }
67 76
68 #pragma mark UITableView Delegate 77 #pragma mark UITableView Delegate
69 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
70 // if(_curHisList == nil || _curHisList.count == 0) {
71 // UILabel * noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height)];
72 // noDataLabel.text = @"No data available";
73 // noDataLabel.backgroundColor = [UIColor clearColor];
74 // noDataLabel.textColor = [UIColor whiteColor];
75 // noDataLabel.textAlignment = NSTextAlignmentCenter;
76 // tableView.backgroundView = noDataLabel;
77 // tableView.backgroundView.layer.zPosition -= 1;
78 // return 0;
79 // }
80 // tableView.backgroundView = nil;
81 return 1;
82 }
83 78
84 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
85 return 6;
86 }
87
88 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 79 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
89 RankingTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RankCell"]; 80 RankingTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RankCell"];
81 [cell setRankingData:[_curDataList objectAtIndex:indexPath.row]];
90 return cell; 82 return cell;
91 } 83 }
92 84
93 #pragma mark Private function 85 #pragma mark Private function
94 - (void)callRequestToUpdateData { 86 - (void)callRequestToUpdateData {
87 [super callRequestToUpdateData];
88
89 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
90 MBProgressHUD *hudView = nil;
91 int mode = self.viewCollectionMode.getCurrentIndex + 1;
92 //dont have all
93 mode = fmin(mode, 3);
94
95 if(_curPage == 1 && !self.refreshControl.isRefreshing) {
96 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
97 }
98 [[ServerAPI server] requestRankingList:token startDate:_startDate endDate:_endDate mode:mode page:_curPage CompletionHandler:^(NSArray *array, NSError *error){
99 dispatch_async(dispatch_get_main_queue(), ^{
100 if(hudView != nil) {
101 [hudView hideAnimated:true];
102 }
103 });
104 RankingViewController __weak *weakSelf = self;
105 [weakSelf updateTableData:array error:error];
106 }];
107 }
108
109 - (void) changeDate {
110 switch (self.viewCollectionTime.getCurrentIndex) {
111 case 1:
112 _startDate = [_endDate dateByAddingTimeInterval:-86400 * 7];
113 break;
114 case 2:
115 _startDate = [_endDate dateByAddingTimeInterval:-86400 * 30];
116 break;
117 case 3:
LifeLog/LifeLog/RankingViewController.xib
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> 2 <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12118" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
3 <device id="retina4_7" orientation="portrait"> 3 <device id="retina4_7" orientation="portrait">
4 <adaptation id="fullscreen"/> 4 <adaptation id="fullscreen"/>
5 </device> 5 </device>
6 <dependencies> 6 <dependencies>
7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/> 7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
8 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> 8 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
9 </dependencies> 9 </dependencies>
10 <objects> 10 <objects>
11 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="RankingViewController"> 11 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="RankingViewController">
12 <connections> 12 <connections>
13 <outlet property="tableRank" destination="R3A-K9-MFe" id="uEX-sL-6D2"/> 13 <outlet property="lblDateTime" destination="5Ro-k6-fvT" id="5uO-ff-Pmc"/>
14 <outlet property="tableBase" destination="R3A-K9-MFe" id="Tf9-Rg-PEW"/>
14 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> 15 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
15 <outlet property="viewCollectionMode" destination="B33-xX-Jro" id="HP4-Xb-LJm"/> 16 <outlet property="viewCollectionMode" destination="B33-xX-Jro" id="HP4-Xb-LJm"/>
16 <outlet property="viewCollectionTime" destination="syA-uK-pbr" id="WdA-Cq-Flj"/> 17 <outlet property="viewCollectionTime" destination="syA-uK-pbr" id="WdA-Cq-Flj"/>
17 <outlet property="viewCollectionType" destination="oUo-Eo-tz5" id="bjw-El-34G"/> 18 <outlet property="viewCollectionType" destination="oUo-Eo-tz5" id="bjw-El-34G"/>
18 </connections> 19 </connections>
19 </placeholder> 20 </placeholder>
20 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> 21 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
21 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> 22 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
22 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 23 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
23 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 24 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
24 <subviews> 25 <subviews>
25 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GBx-lY-9YI" userLabel="ViewHeader"> 26 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GBx-lY-9YI" userLabel="ViewHeader">
26 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 27 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
27 <subviews> 28 <subviews>
28 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ใƒฉใƒณใ‚ญใƒณใ‚ฐ" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="p97-40-8m9" customClass="AutoTransLabel"> 29 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ใƒฉใƒณใ‚ญใƒณใ‚ฐ" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="p97-40-8m9" customClass="AutoTransLabel">
29 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 30 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
30 <fontDescription key="fontDescription" type="system" pointSize="17"/> 31 <fontDescription key="fontDescription" type="system" pointSize="17"/>
31 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 32 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
32 <nil key="highlightedColor"/> 33 <nil key="highlightedColor"/>
33 <userDefinedRuntimeAttributes> 34 <userDefinedRuntimeAttributes>
34 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.rank.title"/> 35 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.rank.title"/>
35 </userDefinedRuntimeAttributes> 36 </userDefinedRuntimeAttributes>
36 </label> 37 </label>
37 <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qPe-ff-jRp"> 38 <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qPe-ff-jRp">
38 <rect key="frame" x="0.0" y="5" width="70" height="36"/> 39 <rect key="frame" x="0.0" y="5" width="70" height="36"/>
39 <constraints> 40 <constraints>
40 <constraint firstAttribute="width" constant="70" id="bEy-jt-69Q"/> 41 <constraint firstAttribute="width" constant="70" id="bEy-jt-69Q"/>
41 </constraints> 42 </constraints>
42 <state key="normal" image="today_back_button"/> 43 <state key="normal" image="today_back_button"/>
43 </button> 44 </button>
44 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WGc-2i-Swk"> 45 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WGc-2i-Swk">
45 <rect key="frame" x="330" y="0.0" width="45" height="46"/> 46 <rect key="frame" x="330" y="0.0" width="45" height="46"/>
46 <constraints> 47 <constraints>
47 <constraint firstAttribute="width" constant="45" id="nJ2-jH-Z45"/> 48 <constraint firstAttribute="width" constant="45" id="nJ2-jH-Z45"/>
48 </constraints> 49 </constraints>
49 <state key="normal" image="icon_menu"/> 50 <state key="normal" image="icon_menu"/>
50 </button> 51 </button>
51 </subviews> 52 </subviews>
52 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 53 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
53 <constraints> 54 <constraints>
54 <constraint firstAttribute="bottom" secondItem="WGc-2i-Swk" secondAttribute="bottom" id="0hd-fk-kJG"/> 55 <constraint firstAttribute="bottom" secondItem="WGc-2i-Swk" secondAttribute="bottom" id="0hd-fk-kJG"/>
55 <constraint firstAttribute="bottom" secondItem="p97-40-8m9" secondAttribute="bottom" id="78G-b2-wAu"/> 56 <constraint firstAttribute="bottom" secondItem="p97-40-8m9" secondAttribute="bottom" id="78G-b2-wAu"/>
56 <constraint firstItem="qPe-ff-jRp" firstAttribute="leading" secondItem="GBx-lY-9YI" secondAttribute="leading" id="9ND-Te-qX9"/> 57 <constraint firstItem="qPe-ff-jRp" firstAttribute="leading" secondItem="GBx-lY-9YI" secondAttribute="leading" id="9ND-Te-qX9"/>
57 <constraint firstItem="qPe-ff-jRp" firstAttribute="top" secondItem="GBx-lY-9YI" secondAttribute="top" constant="5" id="9ZX-A3-Bnp"/> 58 <constraint firstItem="qPe-ff-jRp" firstAttribute="top" secondItem="GBx-lY-9YI" secondAttribute="top" constant="5" id="9ZX-A3-Bnp"/>
58 <constraint firstItem="p97-40-8m9" firstAttribute="top" secondItem="GBx-lY-9YI" secondAttribute="top" id="CVN-ke-5KK"/> 59 <constraint firstItem="p97-40-8m9" firstAttribute="top" secondItem="GBx-lY-9YI" secondAttribute="top" id="CVN-ke-5KK"/>
59 <constraint firstAttribute="height" constant="46" id="SDI-ij-KbH"/> 60 <constraint firstAttribute="height" constant="46" id="SDI-ij-KbH"/>
60 <constraint firstItem="p97-40-8m9" firstAttribute="leading" secondItem="GBx-lY-9YI" secondAttribute="leading" id="U19-fM-q7G"/> 61 <constraint firstItem="p97-40-8m9" firstAttribute="leading" secondItem="GBx-lY-9YI" secondAttribute="leading" id="U19-fM-q7G"/>
61 <constraint firstAttribute="bottom" secondItem="qPe-ff-jRp" secondAttribute="bottom" constant="5" id="jU7-xM-YKX"/> 62 <constraint firstAttribute="bottom" secondItem="qPe-ff-jRp" secondAttribute="bottom" constant="5" id="jU7-xM-YKX"/>
62 <constraint firstItem="WGc-2i-Swk" firstAttribute="top" secondItem="GBx-lY-9YI" secondAttribute="top" id="knL-Yf-VTN"/> 63 <constraint firstItem="WGc-2i-Swk" firstAttribute="top" secondItem="GBx-lY-9YI" secondAttribute="top" id="knL-Yf-VTN"/>
63 <constraint firstAttribute="trailing" secondItem="p97-40-8m9" secondAttribute="trailing" id="sLL-ca-92S"/> 64 <constraint firstAttribute="trailing" secondItem="p97-40-8m9" secondAttribute="trailing" id="sLL-ca-92S"/>
64 <constraint firstAttribute="trailing" secondItem="WGc-2i-Swk" secondAttribute="trailing" id="v0h-pb-83W"/> 65 <constraint firstAttribute="trailing" secondItem="WGc-2i-Swk" secondAttribute="trailing" id="v0h-pb-83W"/>
65 </constraints> 66 </constraints>
66 </view> 67 </view>
67 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="syA-uK-pbr" customClass="CollectionView"> 68 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="syA-uK-pbr" customClass="CollectionView">
68 <rect key="frame" x="0.0" y="46" width="375" height="30"/> 69 <rect key="frame" x="0.0" y="46" width="375" height="30"/>
69 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 70 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
70 <constraints> 71 <constraints>
71 <constraint firstAttribute="height" constant="30" id="ezW-Qs-M7K"/> 72 <constraint firstAttribute="height" constant="30" id="ezW-Qs-M7K"/>
72 </constraints> 73 </constraints>
73 </view> 74 </view>
74 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="B33-xX-Jro" customClass="CollectionView"> 75 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="B33-xX-Jro" customClass="CollectionView">
75 <rect key="frame" x="0.0" y="116" width="375" height="30"/> 76 <rect key="frame" x="0.0" y="116" width="375" height="30"/>
76 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 77 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
77 <constraints> 78 <constraints>
78 <constraint firstAttribute="height" constant="30" id="snn-FM-11r"/> 79 <constraint firstAttribute="height" constant="30" id="snn-FM-11r"/>
79 </constraints> 80 </constraints>
80 </view> 81 </view>
81 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="u5D-xz-8dK"> 82 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="u5D-xz-8dK">
82 <rect key="frame" x="0.0" y="76" width="375" height="40"/> 83 <rect key="frame" x="0.0" y="76" width="375" height="40"/>
83 <subviews> 84 <subviews>
84 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Ro-k6-fvT"> 85 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Ro-k6-fvT">
85 <rect key="frame" x="0.0" y="0.0" width="375" height="40"/> 86 <rect key="frame" x="0.0" y="0.0" width="375" height="40"/>
86 <string key="text" base64-UTF8="YES"> 87 <string key="text" base64-UTF8="YES">
87 MjAxNuW5tCAx5pyIMjLml6XjgIDvvI3jgIAyMDE35bm0IDHmnIgyMeaXpQ0KAA 88 MjAxNuW5tCAx5pyIMjLml6XjgIDvvI3jgIAyMDE35bm0IDHmnIgyMeaXpQ0KAA
88 </string> 89 </string>
89 <fontDescription key="fontDescription" type="system" pointSize="13"/> 90 <fontDescription key="fontDescription" type="system" pointSize="13"/>
90 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 91 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
91 <nil key="highlightedColor"/> 92 <nil key="highlightedColor"/>
92 </label> 93 </label>
93 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eiH-Sk-3VV"> 94 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eiH-Sk-3VV">
94 <rect key="frame" x="15" y="5" width="30" height="30"/> 95 <rect key="frame" x="15" y="5" width="30" height="30"/>
95 <constraints> 96 <constraints>
96 <constraint firstAttribute="height" constant="30" id="kEd-sQ-0ub"/> 97 <constraint firstAttribute="height" constant="30" id="kEd-sQ-0ub"/>
97 <constraint firstAttribute="width" constant="30" id="sFT-sr-7pL"/> 98 <constraint firstAttribute="width" constant="30" id="sFT-sr-7pL"/>
98 </constraints> 99 </constraints>
99 <state key="normal" image="icon_left"/> 100 <state key="normal" image="icon_left"/>
100 <connections> 101 <connections>
101 <action selector="clickButton:" destination="-1" eventType="touchUpInside" id="f1Y-rj-F7d"/> 102 <action selector="clickButton:" destination="-1" eventType="touchUpInside" id="f1Y-rj-F7d"/>
102 </connections> 103 </connections>
103 </button> 104 </button>
104 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Usl-Cl-d9d"> 105 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Usl-Cl-d9d">
105 <rect key="frame" x="330" y="5" width="30" height="30"/> 106 <rect key="frame" x="330" y="5" width="30" height="30"/>
106 <constraints> 107 <constraints>
107 <constraint firstAttribute="width" constant="30" id="uFf-AY-LsL"/> 108 <constraint firstAttribute="width" constant="30" id="uFf-AY-LsL"/>
108 <constraint firstAttribute="height" constant="30" id="v8w-hV-CY1"/> 109 <constraint firstAttribute="height" constant="30" id="v8w-hV-CY1"/>
109 </constraints> 110 </constraints>
110 <state key="normal" image="icon_right"/> 111 <state key="normal" image="icon_right"/>
111 <connections> 112 <connections>
112 <action selector="clickButton:" destination="-1" eventType="touchUpInside" id="OB1-mE-CGE"/> 113 <action selector="clickButton:" destination="-1" eventType="touchUpInside" id="OB1-mE-CGE"/>
113 </connections> 114 </connections>
114 </button> 115 </button>
115 </subviews> 116 </subviews>
116 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 117 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
117 <constraints> 118 <constraints>
118 <constraint firstAttribute="height" constant="40" id="C5o-Zd-KjG"/> 119 <constraint firstAttribute="height" constant="40" id="C5o-Zd-KjG"/>
119 <constraint firstAttribute="bottom" secondItem="5Ro-k6-fvT" secondAttribute="bottom" id="DQQ-wh-s1Q"/> 120 <constraint firstAttribute="bottom" secondItem="5Ro-k6-fvT" secondAttribute="bottom" id="DQQ-wh-s1Q"/>
120 <constraint firstAttribute="trailing" secondItem="5Ro-k6-fvT" secondAttribute="trailing" id="E0c-bJ-AIi"/> 121 <constraint firstAttribute="trailing" secondItem="5Ro-k6-fvT" secondAttribute="trailing" id="E0c-bJ-AIi"/>
121 <constraint firstItem="5Ro-k6-fvT" firstAttribute="top" secondItem="u5D-xz-8dK" secondAttribute="top" id="Mrk-FC-rqh"/> 122 <constraint firstItem="5Ro-k6-fvT" firstAttribute="top" secondItem="u5D-xz-8dK" secondAttribute="top" id="Mrk-FC-rqh"/>
122 <constraint firstItem="eiH-Sk-3VV" firstAttribute="centerY" secondItem="u5D-xz-8dK" secondAttribute="centerY" id="k2J-Lc-ZDI"/> 123 <constraint firstItem="eiH-Sk-3VV" firstAttribute="centerY" secondItem="u5D-xz-8dK" secondAttribute="centerY" id="k2J-Lc-ZDI"/>
123 <constraint firstItem="5Ro-k6-fvT" firstAttribute="leading" secondItem="u5D-xz-8dK" secondAttribute="leading" id="rj5-0J-xs3"/> 124 <constraint firstItem="5Ro-k6-fvT" firstAttribute="leading" secondItem="u5D-xz-8dK" secondAttribute="leading" id="rj5-0J-xs3"/>
124 <constraint firstItem="Usl-Cl-d9d" firstAttribute="centerY" secondItem="u5D-xz-8dK" secondAttribute="centerY" id="sJX-n3-1pz"/> 125 <constraint firstItem="Usl-Cl-d9d" firstAttribute="centerY" secondItem="u5D-xz-8dK" secondAttribute="centerY" id="sJX-n3-1pz"/>
125 <constraint firstItem="eiH-Sk-3VV" firstAttribute="leading" secondItem="u5D-xz-8dK" secondAttribute="leading" constant="15" id="to7-WU-7xo"/> 126 <constraint firstItem="eiH-Sk-3VV" firstAttribute="leading" secondItem="u5D-xz-8dK" secondAttribute="leading" constant="15" id="to7-WU-7xo"/>
126 <constraint firstAttribute="trailing" secondItem="Usl-Cl-d9d" secondAttribute="trailing" constant="15" id="yDF-9k-XlW"/> 127 <constraint firstAttribute="trailing" secondItem="Usl-Cl-d9d" secondAttribute="trailing" constant="15" id="yDF-9k-XlW"/>
127 </constraints> 128 </constraints>
128 </view> 129 </view>
129 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oUo-Eo-tz5" customClass="CollectionView"> 130 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oUo-Eo-tz5" customClass="CollectionView">
130 <rect key="frame" x="0.0" y="577" width="375" height="40"/> 131 <rect key="frame" x="0.0" y="577" width="375" height="40"/>
131 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 132 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
132 <constraints> 133 <constraints>
133 <constraint firstAttribute="height" constant="40" id="Trr-Ku-Ssy"/> 134 <constraint firstAttribute="height" constant="40" id="Trr-Ku-Ssy"/>
134 </constraints> 135 </constraints>
135 </view> 136 </view>
136 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" rowHeight="80" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="R3A-K9-MFe"> 137 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" rowHeight="80" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="R3A-K9-MFe">
137 <rect key="frame" x="0.0" y="147" width="375" height="429"/> 138 <rect key="frame" x="0.0" y="147" width="375" height="429"/>
138 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 139 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
139 <color key="separatorColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 140 <color key="separatorColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
140 <connections> 141 <connections>
141 <outlet property="dataSource" destination="-1" id="JJX-cg-LPL"/> 142 <outlet property="dataSource" destination="-1" id="JJX-cg-LPL"/>
142 <outlet property="delegate" destination="-1" id="u0m-93-lsi"/> 143 <outlet property="delegate" destination="-1" id="u0m-93-lsi"/>
143 </connections> 144 </connections>
144 </tableView> 145 </tableView>
145 </subviews> 146 </subviews>
146 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 147 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
147 <constraints> 148 <constraints>
148 <constraint firstItem="B33-xX-Jro" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="2Mu-hy-FVU"/> 149 <constraint firstItem="B33-xX-Jro" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="2Mu-hy-FVU"/>
149 <constraint firstItem="GBx-lY-9YI" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="5CL-wT-MBg"/> 150 <constraint firstItem="GBx-lY-9YI" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="5CL-wT-MBg"/>
150 <constraint firstItem="u5D-xz-8dK" firstAttribute="top" secondItem="syA-uK-pbr" secondAttribute="bottom" id="5uu-dZ-oXI"/> 151 <constraint firstItem="u5D-xz-8dK" firstAttribute="top" secondItem="syA-uK-pbr" secondAttribute="bottom" id="5uu-dZ-oXI"/>
151 <constraint firstItem="syA-uK-pbr" firstAttribute="top" secondItem="GBx-lY-9YI" secondAttribute="bottom" id="6FQ-vy-d4N"/> 152 <constraint firstItem="syA-uK-pbr" firstAttribute="top" secondItem="GBx-lY-9YI" secondAttribute="bottom" id="6FQ-vy-d4N"/>
152 <constraint firstItem="u5D-xz-8dK" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="75z-RN-ObF"/> 153 <constraint firstItem="u5D-xz-8dK" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="75z-RN-ObF"/>
153 <constraint firstItem="R3A-K9-MFe" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="LyL-9p-qcd"/> 154 <constraint firstItem="R3A-K9-MFe" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="LyL-9p-qcd"/>
154 <constraint firstItem="oUo-Eo-tz5" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="M7I-ue-lip"/> 155 <constraint firstItem="oUo-Eo-tz5" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="M7I-ue-lip"/>
155 <constraint firstAttribute="trailing" secondItem="B33-xX-Jro" secondAttribute="trailing" id="Pjd-Ay-GaV"/> 156 <constraint firstAttribute="trailing" secondItem="B33-xX-Jro" secondAttribute="trailing" id="Pjd-Ay-GaV"/>
156 <constraint firstItem="oUo-Eo-tz5" firstAttribute="top" secondItem="R3A-K9-MFe" secondAttribute="bottom" constant="1" id="QMu-aq-2Zt"/> 157 <constraint firstItem="oUo-Eo-tz5" firstAttribute="top" secondItem="R3A-K9-MFe" secondAttribute="bottom" constant="1" id="QMu-aq-2Zt"/>
157 <constraint firstAttribute="trailing" secondItem="syA-uK-pbr" secondAttribute="trailing" id="Qnl-Pp-y2G"/> 158 <constraint firstAttribute="trailing" secondItem="syA-uK-pbr" secondAttribute="trailing" id="Qnl-Pp-y2G"/>
158 <constraint firstItem="B33-xX-Jro" firstAttribute="top" secondItem="u5D-xz-8dK" secondAttribute="bottom" id="VOl-jo-wU3"/> 159 <constraint firstItem="B33-xX-Jro" firstAttribute="top" secondItem="u5D-xz-8dK" secondAttribute="bottom" id="VOl-jo-wU3"/>
159 <constraint firstItem="GBx-lY-9YI" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="YjB-ef-xTt"/> 160 <constraint firstItem="GBx-lY-9YI" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="YjB-ef-xTt"/>
160 <constraint firstItem="syA-uK-pbr" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="aTf-mb-wlT"/> 161 <constraint firstItem="syA-uK-pbr" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="aTf-mb-wlT"/>
161 <constraint firstAttribute="bottom" secondItem="oUo-Eo-tz5" secondAttribute="bottom" constant="50" id="cux-Vm-qq7"/> 162 <constraint firstAttribute="bottom" secondItem="oUo-Eo-tz5" secondAttribute="bottom" constant="50" id="cux-Vm-qq7"/>
162 <constraint firstAttribute="trailing" secondItem="R3A-K9-MFe" secondAttribute="trailing" id="jBn-JI-SQP"/> 163 <constraint firstAttribute="trailing" secondItem="R3A-K9-MFe" secondAttribute="trailing" id="jBn-JI-SQP"/>
163 <constraint firstItem="R3A-K9-MFe" firstAttribute="top" secondItem="B33-xX-Jro" secondAttribute="bottom" constant="1" id="jTi-59-XsZ"/> 164 <constraint firstItem="R3A-K9-MFe" firstAttribute="top" secondItem="B33-xX-Jro" secondAttribute="bottom" constant="1" id="jTi-59-XsZ"/>
164 <constraint firstAttribute="trailing" secondItem="u5D-xz-8dK" secondAttribute="trailing" id="mDB-o3-gtA"/> 165 <constraint firstAttribute="trailing" secondItem="u5D-xz-8dK" secondAttribute="trailing" id="mDB-o3-gtA"/>
165 <constraint firstAttribute="trailing" secondItem="GBx-lY-9YI" secondAttribute="trailing" id="yaf-8r-ySL"/> 166 <constraint firstAttribute="trailing" secondItem="GBx-lY-9YI" secondAttribute="trailing" id="yaf-8r-ySL"/>
166 <constraint firstAttribute="trailing" secondItem="oUo-Eo-tz5" secondAttribute="trailing" id="zkl-by-qMp"/> 167 <constraint firstAttribute="trailing" secondItem="oUo-Eo-tz5" secondAttribute="trailing" id="zkl-by-qMp"/>
167 </constraints> 168 </constraints>
168 <point key="canvasLocation" x="26.5" y="52.5"/> 169 <point key="canvasLocation" x="26.5" y="52.5"/>
169 </view> 170 </view>
170 </objects> 171 </objects>
171 <resources> 172 <resources>
172 <image name="icon_left" width="30" height="30"/> 173 <image name="icon_left" width="30" height="30"/>
173 <image name="icon_menu" width="30" height="30"/> 174 <image name="icon_menu" width="30" height="30"/>
174 <image name="icon_right" width="30" height="30"/> 175 <image name="icon_right" width="30" height="30"/>
175 <image name="today_back_button" width="73" height="37"/> 176 <image name="today_back_button" width="73" height="37"/>
176 </resources> 177 </resources>
177 </document> 178 </document>
178 179
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 extern NSString *const kServerAddress; 12 extern NSString *const kServerAddress;
13 extern NSString *const kUser; 13 extern NSString *const kUser;
14 extern NSString *const kToken; 14 extern NSString *const kToken;
15 extern NSString *const kNotificationToken; 15 extern NSString *const kNotificationToken;
16 16
17 @interface ServerAPI : NSObject 17 @interface ServerAPI : NSObject
18 + (instancetype) server; 18 + (instancetype) server;
19 @property (nonatomic, assign) NSTimeInterval timeOutInterval; 19 @property (nonatomic, assign) NSTimeInterval timeOutInterval;
20 20
21 #pragma mark - Login and Register 21 #pragma mark - Login and Register
22 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion; 22 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion;
23 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion; 23 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion;
24 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion; 24 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion;
25 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion; 25 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion;
26 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion; 26 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion;
27 27
28 #pragma mark - Home Screen Function 28 #pragma mark - Home Screen Function
29 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion; 29 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion;
30 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion; 30 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion;
31 31
32 #pragma mark - History Screen Function 32 #pragma mark - History Screen Function
33 - (void) requestHistory:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 33 - (void) requestHistory:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
34 - (void) requestHistoryList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 34 - (void) requestHistoryList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
35 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion; 35 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion;
36 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion; 36 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion;
37 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 37 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
38 38
39 #pragma mark - SNS Screen Function 39 #pragma mark - SNS Screen Function
40 /* 40 /*
41 Get tweet of group and get recent tweet is same API 41 Get tweet of group and get recent tweet is same API
42 If groupID equal -1, it will request recent tweet. Otherwise will request tweet of group 42 If groupID equal -1, it will request recent tweet. Otherwise will request tweet of group
43 */ 43 */
44 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 44 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
45 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 45 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
46 46
47 #pragma mark - Group Function 47 #pragma mark - Group Function
48 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion; 48 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion;
49 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 49 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
50 50
51 #pragma mark - Ranking API
52 - (void) requestRankingList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate mode:(int) mode page:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
53
51 #pragma mark - Common API 54 #pragma mark - Common API
52 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion; 55 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion;
53 @end 56 @end
54 57
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 #import "Utilities.h" 10 #import "Utilities.h"
11 11
12 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/"; 12 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/";
13 NSString *const kUser = @"KEY_USER"; 13 NSString *const kUser = @"KEY_USER";
14 NSString *const kToken = @"KEY_TOKEN"; 14 NSString *const kToken = @"KEY_TOKEN";
15 NSString *const kNotificationToken = @"TOKEN_INVALID"; 15 NSString *const kNotificationToken = @"TOKEN_INVALID";
16 16
17 @implementation NSString (NSString_Extended) 17 @implementation NSString (NSString_Extended)
18 - (NSString *)urlencode { 18 - (NSString *)urlencode {
19 NSMutableString *output = [NSMutableString string]; 19 NSMutableString *output = [NSMutableString string];
20 const unsigned char *source = (const unsigned char *)[self UTF8String]; 20 const unsigned char *source = (const unsigned char *)[self UTF8String];
21 int sourceLen = (int)strlen((const char *)source); 21 int sourceLen = (int)strlen((const char *)source);
22 for (int i = 0; i < sourceLen; ++i) { 22 for (int i = 0; i < sourceLen; ++i) {
23 const unsigned char thisChar = source[i]; 23 const unsigned char thisChar = source[i];
24 if (thisChar == ' '){ 24 if (thisChar == ' '){
25 [output appendString:@"+"]; 25 [output appendString:@"+"];
26 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' || 26 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||
27 (thisChar >= 'a' && thisChar <= 'z') || 27 (thisChar >= 'a' && thisChar <= 'z') ||
28 (thisChar >= 'A' && thisChar <= 'Z') || 28 (thisChar >= 'A' && thisChar <= 'Z') ||
29 (thisChar >= '0' && thisChar <= '9')) { 29 (thisChar >= '0' && thisChar <= '9')) {
30 [output appendFormat:@"%c", thisChar]; 30 [output appendFormat:@"%c", thisChar];
31 } else { 31 } else {
32 [output appendFormat:@"%%%02X", thisChar]; 32 [output appendFormat:@"%%%02X", thisChar];
33 } 33 }
34 } 34 }
35 return output; 35 return output;
36 } 36 }
37 @end 37 @end
38 38
39 @implementation ServerAPI 39 @implementation ServerAPI
40 static ServerAPI *_server = nil; 40 static ServerAPI *_server = nil;
41 41
42 NSURLSessionDataTask * searchTask; 42 NSURLSessionDataTask * searchTask;
43 43
44 @synthesize timeOutInterval = _timeOutInterval; 44 @synthesize timeOutInterval = _timeOutInterval;
45 45
46 + (instancetype)server 46 + (instancetype)server
47 { 47 {
48 @synchronized(self) { 48 @synchronized(self) {
49 if (_server == nil) { 49 if (_server == nil) {
50 _server = [[ServerAPI alloc] init]; 50 _server = [[ServerAPI alloc] init];
51 } 51 }
52 } 52 }
53 return _server; 53 return _server;
54 } 54 }
55 55
56 - (instancetype)init 56 - (instancetype)init
57 { 57 {
58 self = [super init]; 58 self = [super init];
59 if (self != nil) { 59 if (self != nil) {
60 self.timeOutInterval = 150; 60 self.timeOutInterval = 150;
61 } 61 }
62 return self; 62 return self;
63 } 63 }
64 64
65 #pragma mark - Login and Register 65 #pragma mark - Login and Register
66 // Login 66 // Login
67 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion 67 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion
68 { 68 {
69 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" token:@"" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) { 69 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" token:@"" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) {
70 70
71 if (completion == NULL) { 71 if (completion == NULL) {
72 return ; 72 return ;
73 } 73 }
74 74
75 if (error == nil) 75 if (error == nil)
76 { 76 {
77 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 77 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
78 78
79 int status = [dataResult[@"status"] intValue]; 79 int status = [dataResult[@"status"] intValue];
80 if (status == 1) { // status = 1 success 80 if (status == 1) { // status = 1 success
81 NSString *token = dataResult[@"result"][@"token"]; 81 NSString *token = dataResult[@"result"][@"token"];
82 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 82 NSDictionary *dictUser = dataResult[@"result"][@"user"];
83 User *user = [[User alloc] init]; 83 User *user = [[User alloc] init];
84 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 84 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
85 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 85 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
86 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 86 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
87 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 87 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
88 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 88 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
89 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 89 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
90 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 90 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
91 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 91 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
92 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 92 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
93 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 93 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
94 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 94 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
95 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 95 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
96 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]]; 96 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]];
97 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]]; 97 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]];
98 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]]; 98 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]];
99 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]]; 99 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]];
100 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue]; 100 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue];
101 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue]; 101 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue];
102 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue]; 102 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue];
103 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue]; 103 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue];
104 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue]; 104 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue];
105 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue]; 105 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue];
106 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue]; 106 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue];
107 completion(user, token, nil); 107 completion(user, token, nil);
108 } 108 }
109 else { // status = 0 error 109 else { // status = 0 error
110 NSString *message = dataResult[@"message"]; 110 NSString *message = dataResult[@"message"];
111 if (message == nil) { 111 if (message == nil) {
112 message = @"Unknown error"; 112 message = @"Unknown error";
113 } 113 }
114 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 114 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
115 completion(nil, nil, loginFaild); 115 completion(nil, nil, loginFaild);
116 } 116 }
117 } 117 }
118 else 118 else
119 { 119 {
120 completion(nil, nil, error); 120 completion(nil, nil, error);
121 } 121 }
122 }]; 122 }];
123 } 123 }
124 124
125 // Register 125 // Register
126 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion { 126 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion {
127 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" token:@"" paras:params completion:^(NSData *data, NSError *error) { 127 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" token:@"" paras:params completion:^(NSData *data, NSError *error) {
128 128
129 if (completion == NULL) { 129 if (completion == NULL) {
130 return ; 130 return ;
131 } 131 }
132 132
133 if (error == nil) 133 if (error == nil)
134 { 134 {
135 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 135 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
136 136
137 int status = [dataResult[@"status"] intValue]; 137 int status = [dataResult[@"status"] intValue];
138 if (status == 1) { // status = 1 success 138 if (status == 1) { // status = 1 success
139 NSString *token = dataResult[@"result"][@"token"]; 139 NSString *token = dataResult[@"result"][@"token"];
140 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 140 NSDictionary *dictUser = dataResult[@"result"][@"user"];
141 User *user = [[User alloc] init]; 141 User *user = [[User alloc] init];
142 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 142 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
143 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 143 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
144 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 144 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
145 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 145 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
146 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 146 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
147 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 147 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
148 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 148 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
149 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 149 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
150 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 150 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
151 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 151 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
152 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 152 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
153 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 153 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
154 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]]; 154 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]];
155 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]]; 155 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]];
156 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]]; 156 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]];
157 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]]; 157 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]];
158 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue]; 158 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue];
159 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue]; 159 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue];
160 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue]; 160 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue];
161 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue]; 161 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue];
162 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue]; 162 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue];
163 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue]; 163 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue];
164 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue]; 164 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue];
165 completion(user, token, nil); 165 completion(user, token, nil);
166 } 166 }
167 else { // status = 0 error 167 else { // status = 0 error
168 NSString *message = dataResult[@"message"]; 168 NSString *message = dataResult[@"message"];
169 if (message == nil) { 169 if (message == nil) {
170 message = @"Unknown error"; 170 message = @"Unknown error";
171 } 171 }
172 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 172 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
173 completion(nil, nil, loginFaild); 173 completion(nil, nil, loginFaild);
174 } 174 }
175 } 175 }
176 else 176 else
177 { 177 {
178 completion(nil, nil, error); 178 completion(nil, nil, error);
179 } 179 }
180 }]; 180 }];
181 } 181 }
182 182
183 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion { 183 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion {
184 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" token:@"" paras:@{@"email":email} completion:^(NSData *data, NSError *error) { 184 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" token:@"" paras:@{@"email":email} completion:^(NSData *data, NSError *error) {
185 185
186 if (completion == NULL) { 186 if (completion == NULL) {
187 return ; 187 return ;
188 } 188 }
189 189
190 if (error == nil) 190 if (error == nil)
191 { 191 {
192 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 192 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
193 193
194 int status = [dataResult[@"status"] intValue]; 194 int status = [dataResult[@"status"] intValue];
195 if (status == 1) { // status = 1 success 195 if (status == 1) { // status = 1 success
196 completion(nil); 196 completion(nil);
197 } 197 }
198 else { // status = 0 error 198 else { // status = 0 error
199 NSString *message = dataResult[@"message"]; 199 NSString *message = dataResult[@"message"];
200 if (message == nil) { 200 if (message == nil) {
201 message = @"Unknown error"; 201 message = @"Unknown error";
202 } 202 }
203 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 203 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
204 completion(forgetPass); 204 completion(forgetPass);
205 } 205 }
206 } 206 }
207 else 207 else
208 { 208 {
209 completion(error); 209 completion(error);
210 } 210 }
211 }]; 211 }];
212 } 212 }
213 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion { 213 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion {
214 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" token:@"" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) { 214 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" token:@"" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) {
215 215
216 if (completion == NULL) { 216 if (completion == NULL) {
217 return ; 217 return ;
218 } 218 }
219 219
220 if (error == nil) 220 if (error == nil)
221 { 221 {
222 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 222 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
223 223
224 int status = [dataResult[@"status"] intValue]; 224 int status = [dataResult[@"status"] intValue];
225 if (status == 1) { // status = 1 success 225 if (status == 1) { // status = 1 success
226 completion(nil); 226 completion(nil);
227 } 227 }
228 else { // status = 0 error 228 else { // status = 0 error
229 NSString *message = dataResult[@"message"]; 229 NSString *message = dataResult[@"message"];
230 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 230 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
231 completion(confirmForgetPass); 231 completion(confirmForgetPass);
232 } 232 }
233 } 233 }
234 else 234 else
235 { 235 {
236 completion(error); 236 completion(error);
237 } 237 }
238 }]; 238 }];
239 } 239 }
240 240
241 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion { 241 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion {
242 NSDictionary *dict = nil; 242 NSDictionary *dict = nil;
243 NSString *base64Encoded = [data base64EncodedStringWithOptions:0]; 243 NSString *base64Encoded = [data base64EncodedStringWithOptions:0];
244 if (token != nil) { 244 if (token != nil) {
245 dict = @{@"token":token, @"img": base64Encoded}; 245 dict = @{@"token":token, @"img": base64Encoded};
246 } 246 }
247 else { 247 else {
248 dict = @{@"img": base64Encoded}; 248 dict = @{@"img": base64Encoded};
249 } 249 }
250 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 250 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
251 251
252 if (completion == NULL) { 252 if (completion == NULL) {
253 return ; 253 return ;
254 } 254 }
255 255
256 if (error == nil) 256 if (error == nil)
257 { 257 {
258 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 258 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
259 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]]; 259 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]];
260 completion(image_profile, nil); 260 completion(image_profile, nil);
261 } 261 }
262 else 262 else
263 { 263 {
264 completion(nil, error); 264 completion(nil, error);
265 } 265 }
266 }]; 266 }];
267 } 267 }
268 268
269 -(NSString *) convertIntToString : (int) type { 269 -(NSString *) convertIntToString : (int) type {
270 switch (type) { 270 switch (type) {
271 case 1: 271 case 1:
272 return @"week"; 272 return @"week";
273 break; 273 break;
274 case 2: 274 case 2:
275 return @"oneMonth"; 275 return @"oneMonth";
276 break; 276 break;
277 case 3: 277 case 3:
278 return @"threeMonth"; 278 return @"threeMonth";
279 break; 279 break;
280 case 4: 280 case 4:
281 return @"sixMonth"; 281 return @"sixMonth";
282 break; 282 break;
283 default: 283 default:
284 return @"today"; 284 return @"today";
285 break; 285 break;
286 } 286 }
287 } 287 }
288 288
289 #pragma mark - Home Screen Function 289 #pragma mark - Home Screen Function
290 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion 290 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion
291 { 291 {
292 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 292 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
293 NSString *url = [kServerAddress stringByAppendingFormat:@"api/top/%d/%@", mode, date]; 293 NSString *url = [kServerAddress stringByAppendingFormat:@"api/top/%d/%@", mode, date];
294 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 294 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
295 295
296 if (completion == NULL) { 296 if (completion == NULL) {
297 return ; 297 return ;
298 } 298 }
299 299
300 if (error == nil) 300 if (error == nil)
301 { 301 {
302 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 302 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
303 int status = [dataResult[@"status"] intValue]; 303 int status = [dataResult[@"status"] intValue];
304 if (status == 1) { // status = 1 success 304 if (status == 1) { // status = 1 success
305 if(dataResult[@"result"] != nil) { 305 if(dataResult[@"result"] != nil) {
306 NSDictionary * dictResult = dataResult[@"result"]; 306 NSDictionary * dictResult = dataResult[@"result"];
307 TopObject *topObject = [[TopObject alloc] init]; 307 TopObject *topObject = [[TopObject alloc] init];
308 TargetInfor *targetInfor = [[TargetInfor alloc] initWithData:dictResult[@"targetInf"]]; 308 TargetInfor *targetInfor = [[TargetInfor alloc] initWithData:dictResult[@"targetInf"]];
309 topObject.targetInfor = targetInfor; 309 topObject.targetInfor = targetInfor;
310 topObject.kcal = [[NSString stringWithFormat:@"%@", dictResult[@"kcal"]] intValue]; 310 topObject.kcal = [[NSString stringWithFormat:@"%@", dictResult[@"kcal"]] intValue];
311 topObject.distance = [[NSString stringWithFormat:@"%@", dictResult[@"distance"]] floatValue]; 311 topObject.distance = [[NSString stringWithFormat:@"%@", dictResult[@"distance"]] floatValue];
312 topObject.time = [NSString stringWithFormat:@"%@", dictResult[@"time"]]; 312 topObject.time = [NSString stringWithFormat:@"%@", dictResult[@"time"]];
313 NSMutableArray *arrayStep = [[NSMutableArray alloc] init]; 313 NSMutableArray *arrayStep = [[NSMutableArray alloc] init];
314 NSArray *array = dictResult[@"dataChart"]; 314 NSArray *array = dictResult[@"dataChart"];
315 for(NSDictionary *dict in array) { 315 for(NSDictionary *dict in array) {
316 StepObject *object = [[StepObject alloc] init]; 316 StepObject *object = [[StepObject alloc] init];
317 if([dict objectForKey:@"numStep"] != nil) { 317 if([dict objectForKey:@"numStep"] != nil) {
318 object.step = [dict[@"numStep"] intValue]; 318 object.step = [dict[@"numStep"] intValue];
319 } 319 }
320 if([dict objectForKey:@"hour"] != nil) { 320 if([dict objectForKey:@"hour"] != nil) {
321 object.hour = [dict[@"hour"] intValue]; 321 object.hour = [dict[@"hour"] intValue];
322 } 322 }
323 switch (mode) { 323 switch (mode) {
324 case 1: 324 case 1:
325 object.typeStep = @"walking"; 325 object.typeStep = @"walking";
326 break; 326 break;
327 case 2: 327 case 2:
328 object.typeStep = @"running"; 328 object.typeStep = @"running";
329 break; 329 break;
330 case 3: 330 case 3:
331 object.typeStep = @"bike"; 331 object.typeStep = @"bike";
332 break; 332 break;
333 default: 333 default:
334 break; 334 break;
335 } 335 }
336 [arrayStep addObject:object]; 336 [arrayStep addObject:object];
337 } 337 }
338 topObject.dataChart = [[NSMutableArray alloc] initWithArray:arrayStep]; 338 topObject.dataChart = [[NSMutableArray alloc] initWithArray:arrayStep];
339 completion(topObject, nil); 339 completion(topObject, nil);
340 } 340 }
341 else { 341 else {
342 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 342 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
343 completion(nil, errorObject); 343 completion(nil, errorObject);
344 } 344 }
345 } 345 }
346 else { 346 else {
347 NSString *message = dataResult[@"message"]; 347 NSString *message = dataResult[@"message"];
348 if (message == nil) { 348 if (message == nil) {
349 message = @"Unknown error"; 349 message = @"Unknown error";
350 } 350 }
351 351
352 if ([message isEqualToString:@"Token is invalid"]) { 352 if ([message isEqualToString:@"Token is invalid"]) {
353 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 353 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
354 [self requestTopWithMode:mode andDate:date CompletionHandler:completion]; 354 [self requestTopWithMode:mode andDate:date CompletionHandler:completion];
355 } 355 }
356 else { 356 else {
357 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 357 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
358 completion(nil, errorObject); 358 completion(nil, errorObject);
359 } 359 }
360 } 360 }
361 } 361 }
362 else 362 else
363 { 363 {
364 completion(nil, error); 364 completion(nil, error);
365 } 365 }
366 }]; 366 }];
367 } 367 }
368 368
369 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion { 369 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion {
370 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 370 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
371 NSString *url = [kServerAddress stringByAppendingFormat:@"api/createLog"]; 371 NSString *url = [kServerAddress stringByAppendingFormat:@"api/createLog"];
372 NSDictionary *dict = @{@"mode": [NSNumber numberWithInt:mode], @"numStep": [NSNumber numberWithInt:numStep], @"startTime": startDate, @"endTime": endDate}; 372 NSDictionary *dict = @{@"mode": [NSNumber numberWithInt:mode], @"numStep": [NSNumber numberWithInt:numStep], @"startTime": startDate, @"endTime": endDate};
373 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 373 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
374 374
375 if (completion == NULL) { 375 if (completion == NULL) {
376 return ; 376 return ;
377 } 377 }
378 378
379 if (error == nil) 379 if (error == nil)
380 { 380 {
381 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 381 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
382 int status = [dataResult[@"status"] intValue]; 382 int status = [dataResult[@"status"] intValue];
383 if (status == 1) { // status = 1 success 383 if (status == 1) { // status = 1 success
384 completion(nil); 384 completion(nil);
385 } 385 }
386 else { 386 else {
387 NSString *message = dataResult[@"message"]; 387 NSString *message = dataResult[@"message"];
388 if (message == nil) { 388 if (message == nil) {
389 message = @"Unknown error"; 389 message = @"Unknown error";
390 } 390 }
391 391
392 if ([message isEqualToString:@"Token is invalid"]) { 392 if ([message isEqualToString:@"Token is invalid"]) {
393 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 393 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
394 [self requestCreateLog:mode withStep:numStep startDate:startDate endDate:endDate CompletionHandler:completion]; 394 [self requestCreateLog:mode withStep:numStep startDate:startDate endDate:endDate CompletionHandler:completion];
395 } 395 }
396 else { 396 else {
397 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 397 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
398 completion(errorObject); 398 completion(errorObject);
399 } 399 }
400 } 400 }
401 } 401 }
402 else 402 else
403 { 403 {
404 completion(error); 404 completion(error);
405 } 405 }
406 }]; 406 }];
407 } 407 }
408 408
409 #pragma mark - History Screen Function 409 #pragma mark - History Screen Function
410 - (void) requestHistory:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 410 - (void) requestHistory:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
411 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/%@/%@", [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""]]; 411 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/%@/%@", [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""]];
412 NSLog(@"requestHistory link %@", url); 412 NSLog(@"requestHistory link %@", url);
413 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 413 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
414 414
415 if (completion == NULL) { 415 if (completion == NULL) {
416 return ; 416 return ;
417 } 417 }
418 418
419 if (error == nil) 419 if (error == nil)
420 { 420 {
421 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 421 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
422 NSLog(@"%@", dataResult); 422 NSLog(@"%@", dataResult);
423 int status = [dataResult[@"status"] intValue]; 423 int status = [dataResult[@"status"] intValue];
424 if (status == 1) { // status = 1 success 424 if (status == 1) { // status = 1 success
425 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init]; 425 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init];
426 NSDictionary * arrResult = dataResult[@"result"]; 426 NSDictionary * arrResult = dataResult[@"result"];
427 if(arrResult != nil) { 427 if(arrResult != nil) {
428 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_1", @"mode_2", @"mode_3", nil]; 428 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_1", @"mode_2", @"mode_3", nil];
429 for(NSString * key in arrayKey) { 429 for(NSString * key in arrayKey) {
430 NSDictionary *mode = [arrResult objectForKey:key]; 430 NSDictionary *mode = [arrResult objectForKey:key];
431 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) { 431 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) {
432 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode]; 432 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode];
433 [arrayHistory addObject:objectMode]; 433 [arrayHistory addObject:objectMode];
434 } 434 }
435 else { 435 else {
436 [arrayHistory addObject:[[HistoryObject alloc] init]]; 436 [arrayHistory addObject:[[HistoryObject alloc] init]];
437 } 437 }
438 } 438 }
439 } 439 }
440 completion(arrayHistory, nil); 440 completion(arrayHistory, nil);
441 } 441 }
442 else { 442 else {
443 NSString *message = dataResult[@"message"]; 443 NSString *message = dataResult[@"message"];
444 if (message == nil) { 444 if (message == nil) {
445 message = @"Unknown error"; 445 message = @"Unknown error";
446 } 446 }
447 447
448 if ([message isEqualToString:@"Token is invalid"]) { 448 if ([message isEqualToString:@"Token is invalid"]) {
449 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 449 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
450 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 450 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
451 [self requestHistory:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion]; 451 [self requestHistory:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion];
452 } 452 }
453 else { 453 else {
454 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 454 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
455 completion(nil, errorObject); 455 completion(nil, errorObject);
456 } 456 }
457 } 457 }
458 } 458 }
459 else 459 else
460 { 460 {
461 completion(nil, error); 461 completion(nil, error);
462 } 462 }
463 }]; 463 }];
464 } 464 }
465 465
466 - (void) requestHistoryList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 466 - (void) requestHistoryList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
467 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/detail/%@/%@", [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""]]; 467 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/detail/%@/%@", [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""]];
468 NSLog(@"requestHistoryList link %@", url); 468 NSLog(@"requestHistoryList link %@", url);
469 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 469 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
470 470
471 if (completion == NULL) { 471 if (completion == NULL) {
472 return ; 472 return ;
473 } 473 }
474 474
475 if (error == nil) 475 if (error == nil)
476 { 476 {
477 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 477 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
478 NSLog(@"%@", dataResult); 478 NSLog(@"%@", dataResult);
479 int status = [dataResult[@"status"] intValue]; 479 int status = [dataResult[@"status"] intValue];
480 if (status == 1) { // status = 1 success 480 if (status == 1) { // status = 1 success
481 if(dataResult[@"result"] != nil) { 481 if(dataResult[@"result"] != nil) {
482 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init]; 482 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init];
483 NSDictionary * arrResult = dataResult[@"result"]; 483 NSDictionary * arrResult = dataResult[@"result"];
484 if(arrResult != nil) { 484 if(arrResult != nil) {
485 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_1", @"mode_2", @"mode_3", nil]; 485 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_1", @"mode_2", @"mode_3", nil];
486 for(NSString * key in arrayKey) { 486 for(NSString * key in arrayKey) {
487 NSDictionary *mode = [arrResult objectForKey:key]; 487 NSDictionary *mode = [arrResult objectForKey:key];
488 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) { 488 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) {
489 NSMutableArray *array = [[NSMutableArray alloc] init]; 489 NSMutableArray *array = [[NSMutableArray alloc] init];
490 for(NSString *key in mode.allKeys) { 490 for(NSString *key in mode.allKeys) {
491 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode[key]]; 491 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode[key]];
492 objectMode.date = [Utilities dateFromString:key withFormat:@"yyyy-MM-dd"]; 492 objectMode.date = [Utilities dateFromString:key withFormat:@"yyyy-MM-dd"];
493 [array addObject:objectMode]; 493 [array addObject:objectMode];
494 } 494 }
495 [arrayHistory addObject:array]; 495 [arrayHistory addObject:array];
496 } 496 }
497 else { 497 else {
498 [arrayHistory addObject:[[NSArray alloc] init]]; 498 [arrayHistory addObject:[[NSArray alloc] init]];
499 } 499 }
500 } 500 }
501 } 501 }
502 completion(arrayHistory, nil); 502 completion(arrayHistory, nil);
503 } 503 }
504 else { 504 else {
505 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 505 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
506 completion(nil, errorObject); 506 completion(nil, errorObject);
507 } 507 }
508 } 508 }
509 else { 509 else {
510 NSString *message = dataResult[@"message"]; 510 NSString *message = dataResult[@"message"];
511 if (message == nil) { 511 if (message == nil) {
512 message = @"Unknown error"; 512 message = @"Unknown error";
513 } 513 }
514 514
515 if ([message isEqualToString:@"Token is invalid"]) { 515 if ([message isEqualToString:@"Token is invalid"]) {
516 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 516 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
517 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 517 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
518 [self requestHistoryList:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion]; 518 [self requestHistoryList:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion];
519 } 519 }
520 else { 520 else {
521 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 521 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
522 completion(nil, errorObject); 522 completion(nil, errorObject);
523 } 523 }
524 } 524 }
525 } 525 }
526 else 526 else
527 { 527 {
528 completion(nil, error); 528 completion(nil, error);
529 } 529 }
530 }]; 530 }];
531 } 531 }
532 532
533 #pragma mark - SNS Screen Function 533 #pragma mark - SNS Screen Function
534 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 534 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
535 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/sns/%d", page]; 535 NSString *url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?page=%d&record=10", page];
536 if(groupID > -1) { 536 if(groupID > -1) {
537 url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?group_id=%d&page=%d&record=10", groupID, page]; 537 url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?group_id=%d&page=%d&record=10", groupID, page];
538 } 538 }
539 NSLog(@"requestTweetsList link %@", url); 539 NSLog(@"requestTweetsList link %@", url);
540 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 540 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
541 541
542 if (completion == NULL) { 542 if (completion == NULL) {
543 return ; 543 return ;
544 } 544 }
545 545
546 if (error == nil) 546 if (error == nil)
547 { 547 {
548 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 548 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
549 NSLog(@"%@", dataResult); 549 NSLog(@"%@", dataResult);
550 int status = [dataResult[@"status"] intValue]; 550 int status = [dataResult[@"status"] intValue];
551 if (status == 1) { // status = 1 success 551 if (status == 1) { // status = 1 success
552 if(dataResult[@"result"] != nil) { 552 if(dataResult[@"result"] != nil) {
553 NSArray * array = dataResult[@"result"]; 553 NSArray * array = dataResult[@"result"];
554 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 554 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
555 for(NSDictionary * dict in array) { 555 for(NSDictionary * dict in array) {
556 TweetObject * object = [[TweetObject alloc] initWithData:dict]; 556 TweetObject * object = [[TweetObject alloc] initWithData:dict];
557 [arrayTweets addObject:object]; 557 [arrayTweets addObject:object];
558 } 558 }
559 completion(arrayTweets, nil); 559 completion(arrayTweets, nil);
560 } 560 }
561 else { 561 else {
562 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 562 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
563 completion(nil, errorObject); 563 completion(nil, errorObject);
564 } 564 }
565 } 565 }
566 else { 566 else {
567 NSString *message = dataResult[@"message"]; 567 NSString *message = dataResult[@"message"];
568 if (message == nil) { 568 if (message == nil) {
569 message = @"Unknown error"; 569 message = @"Unknown error";
570 } 570 }
571 571
572 if ([message isEqualToString:@"Token is invalid"]) { 572 if ([message isEqualToString:@"Token is invalid"]) {
573 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 573 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
574 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 574 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
575 [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 575 [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
576 } 576 }
577 else { 577 else {
578 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 578 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
579 completion(nil, errorObject); 579 completion(nil, errorObject);
580 } 580 }
581 } 581 }
582 } 582 }
583 else 583 else
584 { 584 {
585 completion(nil, error); 585 completion(nil, error);
586 } 586 }
587 }]; 587 }];
588 } 588 }
589 589
590 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 590 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
591 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/search"]; 591 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/search"];
592 NSLog(@"searchGroup link %@ page %d", url, page); 592 NSLog(@"searchGroup link %@ page %d", url, page);
593 if(searchTask != nil) { 593 if(searchTask != nil) {
594 [searchTask cancel]; 594 [searchTask cancel];
595 } 595 }
596 596
597 searchTask = [self _request:url method:@"POST" token:token paras:@{@"keyword":key, @"page": [NSNumber numberWithInt:page]} completion:^(NSData *data, NSError *error) { 597 searchTask = [self _request:url method:@"POST" token:token paras:@{@"keyword":key, @"page": [NSNumber numberWithInt:page]} completion:^(NSData *data, NSError *error) {
598 searchTask = nil; 598 searchTask = nil;
599 if (completion == NULL) { 599 if (completion == NULL) {
600 return ; 600 return ;
601 } 601 }
602 602
603 if (error == nil) 603 if (error == nil)
604 { 604 {
605 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 605 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
606 NSLog(@"%@", dataResult); 606 NSLog(@"%@", dataResult);
607 int status = [dataResult[@"status"] intValue]; 607 int status = [dataResult[@"status"] intValue];
608 if (status == 1) { // status = 1 success 608 if (status == 1) { // status = 1 success
609 if(dataResult[@"result"] != nil) { 609 if(dataResult[@"result"] != nil) {
610 NSArray * array = dataResult[@"result"]; 610 NSArray * array = dataResult[@"result"];
611 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 611 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
612 for(NSDictionary * dict in array) { 612 for(NSDictionary * dict in array) {
613 GroupObject * object = [[GroupObject alloc] initWithData:dict]; 613 GroupObject * object = [[GroupObject alloc] initWithData:dict];
614 [arrayTweets addObject:object]; 614 [arrayTweets addObject:object];
615 } 615 }
616 completion(arrayTweets, nil); 616 completion(arrayTweets, nil);
617 } 617 }
618 else { 618 else {
619 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 619 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
620 completion(nil, errorObject); 620 completion(nil, errorObject);
621 } 621 }
622 } 622 }
623 else { 623 else {
624 NSString *message = dataResult[@"message"]; 624 NSString *message = dataResult[@"message"];
625 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 625 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
626 completion(nil, errorObject); 626 completion(nil, errorObject);
627 } 627 }
628 } 628 }
629 else 629 else
630 { 630 {
631 completion(nil, error); 631 completion(nil, error);
632 } 632 }
633 }]; 633 }];
634 } 634 }
635 635
636 #pragma mark - Group Function 636 #pragma mark - Group Function
637 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion { 637 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion {
638 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"]; 638 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"];
639 NSLog(@"requestCreateGroup link %@", url); 639 NSLog(@"requestCreateGroup link %@", url);
640 NSDictionary * dict = @{@"group_name":group.name, 640 NSDictionary * dict = @{@"group_name":group.name,
641 @"goal":group.goal, 641 @"goal":group.goal,
642 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode], 642 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode],
643 @"run_mode_active":[NSNumber numberWithBool:group.runMode], 643 @"run_mode_active":[NSNumber numberWithBool:group.runMode],
644 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode], 644 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode],
645 @"step_mode_active":[NSNumber numberWithBool:group.stepMode], 645 @"step_mode_active":[NSNumber numberWithBool:group.stepMode],
646 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode], 646 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode],
647 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode], 647 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode],
648 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal], 648 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal],
649 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal], 649 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal],
650 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]}; 650 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]};
651 651
652 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 652 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
653 653
654 if (completion == NULL) { 654 if (completion == NULL) {
655 return ; 655 return ;
656 } 656 }
657 657
658 if (error == nil) 658 if (error == nil)
659 { 659 {
660 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 660 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
661 NSLog(@"%@", dataResult); 661 NSLog(@"%@", dataResult);
662 int status = [dataResult[@"status"] intValue]; 662 int status = [dataResult[@"status"] intValue];
663 if (status == 1) { // status = 1 success 663 if (status == 1) { // status = 1 success
664 if(dataResult[@"result"] != nil) { 664 if(dataResult[@"result"] != nil) {
665 NSDictionary * dict = dataResult[@"result"]; 665 NSDictionary * dict = dataResult[@"result"];
666 group.groupID = [dict[@"group_id"] intValue]; 666 group.groupID = [dict[@"group_id"] intValue];
667 completion(group, nil); 667 completion(group, nil);
668 } 668 }
669 else { 669 else {
670 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 670 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
671 completion(nil, errorObject); 671 completion(nil, errorObject);
672 } 672 }
673 } 673 }
674 else { 674 else {
675 NSString *message = dataResult[@"message"]; 675 NSString *message = dataResult[@"message"];
676 if (message == nil) { 676 if (message == nil) {
677 message = @"Unknown error"; 677 message = @"Unknown error";
678 } 678 }
679 679
680 if ([message isEqualToString:@"Token is invalid"]) { 680 if ([message isEqualToString:@"Token is invalid"]) {
681 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 681 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
682 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 682 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
683 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion]; 683 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion];
684 } 684 }
685 else { 685 else {
686 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 686 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
687 completion(nil, errorObject); 687 completion(nil, errorObject);
688 } 688 }
689 } 689 }
690 } 690 }
691 else 691 else
692 { 692 {
693 completion(nil, error); 693 completion(nil, error);
694 } 694 }
695 }]; 695 }];
696 } 696 }
697 697
698 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion { 698 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion {
699 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID]; 699 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID];
700 NSLog(@"getGroupDetail link %@", url); 700 NSLog(@"getGroupDetail link %@", url);
701 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 701 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
702 702
703 if (completion == NULL) { 703 if (completion == NULL) {
704 return ; 704 return ;
705 } 705 }
706 706
707 if (error == nil) 707 if (error == nil)
708 { 708 {
709 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 709 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
710 NSLog(@"%@", dataResult); 710 NSLog(@"%@", dataResult);
711 int status = [dataResult[@"status"] intValue]; 711 int status = [dataResult[@"status"] intValue];
712 if (status == 1) { // status = 1 success 712 if (status == 1) { // status = 1 success
713 if(dataResult[@"result"] != nil) { 713 if(dataResult[@"result"] != nil) {
714 NSArray * array = dataResult[@"result"]; 714 NSArray * array = dataResult[@"result"];
715 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID]; 715 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID];
716 completion(object, nil); 716 completion(object, nil);
717 } 717 }
718 else { 718 else {
719 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 719 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
720 completion(nil, errorObject); 720 completion(nil, errorObject);
721 } 721 }
722 } 722 }
723 else { 723 else {
724 NSString *message = dataResult[@"message"]; 724 NSString *message = dataResult[@"message"];
725 if (message == nil) { 725 if (message == nil) {
726 message = @"Unknown error"; 726 message = @"Unknown error";
727 } 727 }
728 728
729 if ([message isEqualToString:@"Token is invalid"]) { 729 if ([message isEqualToString:@"Token is invalid"]) {
730 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 730 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
731 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 731 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
732 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion]; 732 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion];
733 } 733 }
734 else { 734 else {
735 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 735 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
736 completion(nil, errorObject); 736 completion(nil, errorObject);
737 } 737 }
738 } 738 }
739 } 739 }
740 else 740 else
741 { 741 {
742 completion(nil, error); 742 completion(nil, error);
743 } 743 }
744 }]; 744 }];
745 } 745 }
746 746
747 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 747 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
748 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/member/%d/%d", groupID, page]; 748 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/member/%d/%d", groupID, page];
749 NSLog(@"requestMemberList link %@ page %d", url, page); 749 NSLog(@"requestMemberList link %@ page %d", url, page);
750 750
751 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 751 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
752 if (completion == NULL) { 752 if (completion == NULL) {
753 return ; 753 return ;
754 } 754 }
755 755
756 if (error == nil) 756 if (error == nil)
757 { 757 {
758 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 758 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
759 NSLog(@"%@", dataResult); 759 NSLog(@"%@", dataResult);
760 int status = [dataResult[@"status"] intValue]; 760 int status = [dataResult[@"status"] intValue];
761 if (status == 1) { // status = 1 success 761 if (status == 1) { // status = 1 success
762 if(dataResult[@"result"] != nil) { 762 if(dataResult[@"result"] != nil) {
763 NSArray * array = dataResult[@"result"]; 763 NSArray * array = dataResult[@"result"];
764 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 764 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
765 for(NSDictionary * dict in array) { 765 for(NSDictionary * dict in array) {
766 MemberObject * object = [[MemberObject alloc] initWithData:dict]; 766 MemberObject * object = [[MemberObject alloc] initWithData:dict];
767 [arrayTweets addObject:object]; 767 [arrayTweets addObject:object];
768 } 768 }
769 completion(arrayTweets, nil); 769 completion(arrayTweets, nil);
770 } 770 }
771 else { 771 else {
772 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 772 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
773 completion(nil, errorObject); 773 completion(nil, errorObject);
774 } 774 }
775 } 775 }
776 else { 776 else {
777 NSString *message = dataResult[@"message"]; 777 NSString *message = dataResult[@"message"];
778 if (message == nil) { 778 if (message == nil) {
779 message = @"Unknown error"; 779 message = @"Unknown error";
780 } 780 }
781 781
782 if ([message isEqualToString:@"Token is invalid"]) { 782 if ([message isEqualToString:@"Token is invalid"]) {
783 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 783 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
784 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 784 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
785 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 785 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
786 } 786 }
787 else { 787 else {
788 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 788 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
789 completion(nil, errorObject); 789 completion(nil, errorObject);
790 } 790 }
791 } 791 }
792 } 792 }
793 else 793 else
794 { 794 {
795 completion(nil, error); 795 completion(nil, error);
796 } 796 }
797 }]; 797 }];
798 } 798 }
799 799
800 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion { 800 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion {
801 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"]; 801 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"];
802 NSLog(@"requestJoinGroup link %@", url); 802 NSLog(@"requestJoinGroup link %@", url);
803 803
804 [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) { 804 [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) {
805 if (completion == NULL) { 805 if (completion == NULL) {
806 return ; 806 return ;
807 } 807 }
808 808
809 if (error == nil) 809 if (error == nil)
810 { 810 {
811 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 811 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
812 NSLog(@"%@", dataResult); 812 NSLog(@"%@", dataResult);
813 int status = [dataResult[@"status"] intValue]; 813 int status = [dataResult[@"status"] intValue];
814 if (status == 1) { // status = 1 success 814 if (status == 1) { // status = 1 success
815 if(dataResult[@"result"] != nil) { 815 if(dataResult[@"result"] != nil) {
816 completion(nil); 816 completion(nil);
817 } 817 }
818 else { 818 else {
819 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 819 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
820 completion(errorObject); 820 completion(errorObject);
821 } 821 }
822 } 822 }
823 else { 823 else {
824 NSString *message = dataResult[@"message"]; 824 NSString *message = dataResult[@"message"];
825 if ([message isEqualToString:@"Token is invalid"]) { 825 if ([message isEqualToString:@"Token is invalid"]) {
826 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 826 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
827 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 827 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
828 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion]; 828 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion];
829 } 829 }
830 else { 830 else {
831 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 831 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
832 completion(errorObject); 832 completion(errorObject);
833 } 833 }
834 } 834 }
835 } 835 }
836 else 836 else
837 { 837 {
838 completion(error); 838 completion(error);
839 } 839 }
840 }]; 840 }];
841 } 841 }
842 842
843 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 843 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
844 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/list"]; 844 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/list"];
845 NSLog(@"requestGroupList link %@", url); 845 NSLog(@"requestGroupList link %@", url);
846 846
847 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 847 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
848 if (completion == NULL) { 848 if (completion == NULL) {
849 return ; 849 return ;
850 } 850 }
851 851
852 if (error == nil) 852 if (error == nil)
853 { 853 {
854 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 854 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
855 NSLog(@"%@", dataResult); 855 NSLog(@"%@", dataResult);
856 int status = [dataResult[@"status"] intValue]; 856 int status = [dataResult[@"status"] intValue];
857 if (status == 1) { // status = 1 success 857 if (status == 1) { // status = 1 success
858 if(dataResult[@"result"] != nil) { 858 if(dataResult[@"result"] != nil) {
859 NSArray * array = dataResult[@"result"]; 859 NSArray * array = dataResult[@"result"];
860 NSMutableArray * arrayGroup = [[NSMutableArray alloc] init]; 860 NSMutableArray * arrayGroup = [[NSMutableArray alloc] init];
861 for(NSDictionary * dict in array) { 861 for(NSDictionary * dict in array) {
862 GroupObject * object = [[GroupObject alloc] initWithShortData:dict]; 862 GroupObject * object = [[GroupObject alloc] initWithShortData:dict];
863 [arrayGroup addObject:object]; 863 [arrayGroup addObject:object];
864 } 864 }
865 completion(arrayGroup, nil); 865 completion(arrayGroup, nil);
866 } 866 }
867 else { 867 else {
868 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 868 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
869 completion(nil, errorObject); 869 completion(nil, errorObject);
870 } 870 }
871 } 871 }
872 else { 872 else {
873 NSString *message = dataResult[@"message"]; 873 NSString *message = dataResult[@"message"];
874 if (message == nil) { 874 if (message == nil) {
875 message = @"Unknown error"; 875 message = @"Unknown error";
876 } 876 }
877 877
878 if ([message isEqualToString:@"Token is invalid"]) { 878 if ([message isEqualToString:@"Token is invalid"]) {
879 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 879 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
880 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 880 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
881 [self requestGroupList:tokenNew CompletionHandler:completion]; 881 [self requestGroupList:tokenNew CompletionHandler:completion];
882 } 882 }
883 else { 883 else {
884 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 884 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
885 completion(nil, errorObject); 885 completion(nil, errorObject);
886 } 886 }
887 } 887 }
888 } 888 }
889 else 889 else
890 { 890 {
891 completion(nil, error); 891 completion(nil, error);
892 } 892 }
893 }]; 893 }];
894 } 894 }
895
896 #pragma mark - Ranking API
897 - (void) requestRankingList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate mode:(int) mode page:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
898 NSString *url = [kServerAddress stringByAppendingFormat:@"api/ranking/%d/%@/%@/%d", mode, [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""], page];
899 NSLog(@"requestRaningList link %@", url);
900 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
901
902 if (completion == NULL) {
903 return ;
904 }
905
906 if (error == nil)
907 {
908 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
909 NSLog(@"%@", dataResult);
910 int status = [dataResult[@"status"] intValue];
911 if (status == 1) { // status = 1 success
912 NSArray * array = dataResult[@"result"];
913 NSMutableArray * arrayRanking = [[NSMutableArray alloc] init];
914 for(NSDictionary * dict in array) {
915 RankingObject * object = [[RankingObject alloc] initWithData:dict];
916 [arrayRanking addObject:object];
917 }
918 completion(arrayRanking, nil);
919 }
920 else {
921 NSString *message = dataResult[@"message"];
922 if (message == nil) {
923 message = @"Unknown error";
924 }
925
926 if ([message isEqualToString:@"Token is invalid"]) {
927 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
928 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
929 [self requestRankingList:tokenNew startDate:startDate endDate:endDate mode:mode page:page CompletionHandler:completion];
930 }
931 else {
932 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
933 completion(nil, errorObject);
934 }
935 }
936 }
937 else
938 {
939 completion(nil, error);
940 }
941 }];
942 }
943
895 #pragma mark - Common API 944 #pragma mark - Common API
896 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion { 945 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion {
897 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) { 946 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) {
898 947
899 if (completion == NULL) { 948 if (completion == NULL) {
900 return ; 949 return ;
901 } 950 }
902 951
903 if (error == nil) 952 if (error == nil)
904 { 953 {
905 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 954 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
906 955
907 int status = [dataResult[@"status"] intValue]; 956 int status = [dataResult[@"status"] intValue];
908 if (status == 1) { // status = 1 success 957 if (status == 1) { // status = 1 success
909 NSArray *arrayResult = dataResult[@"result"]; 958 NSArray *arrayResult = dataResult[@"result"];
910 if (arrayResult.count > 0) { 959 if (arrayResult.count > 0) {
911 NSString *token = arrayResult[0]; 960 NSString *token = arrayResult[0];
912 completion(token, nil); 961 completion(token, nil);
913 } 962 }
914 else { 963 else {
915 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 964 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
916 completion(nil, errorObject); 965 completion(nil, errorObject);
917 } 966 }
918 967
919 } 968 }
920 else { // status = 0 error 969 else { // status = 0 error
921 NSString *message = dataResult[@"message"]; 970 NSString *message = dataResult[@"message"];
922 if (message == nil) { 971 if (message == nil) {
923 message = @"Unknown error"; 972 message = @"Unknown error";
924 } 973 }
925 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 974 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
926 completion(nil, loginFaild); 975 completion(nil, loginFaild);
927 } 976 }
928 } 977 }
929 else 978 else
930 { 979 {
931 completion(nil, error); 980 completion(nil, error);
932 } 981 }
933 }]; 982 }];
934 } 983 }
935 984
936 #pragma mark - Private Function 985 #pragma mark - Private Function
937 - (void) checkToken { 986 - (void) checkToken {
938 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil]; 987 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil];
939 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser]; 988 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser];
940 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data]; 989 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data];
941 if (user != nil) { 990 if (user != nil) {
942 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) { 991 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) {
943 if (error == nil) { 992 if (error == nil) {
944 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken]; 993 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken];
945 [[NSUserDefaults standardUserDefaults] synchronize]; 994 [[NSUserDefaults standardUserDefaults] synchronize];
946 } 995 }
947 }]; 996 }];
948 } 997 }
949 } 998 }
950 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary 999 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary
951 { 1000 {
952 NSMutableArray *parts = [[NSMutableArray alloc] init]; 1001 NSMutableArray *parts = [[NSMutableArray alloc] init];
953 for (id key in dictionary) 1002 for (id key in dictionary)
954 { 1003 {
955 NSString *encodedValue = [[dictionary[key] description] urlencode]; 1004 NSString *encodedValue = [[dictionary[key] description] urlencode];
956 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; 1005 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
957 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue]; 1006 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue];
958 [parts addObject:part]; 1007 [parts addObject:part];
959 } 1008 }
960 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"]; 1009 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"];
961 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding]; 1010 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding];
962 } 1011 }
963 1012
964 - (NSURLSessionDataTask *) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion 1013 - (NSURLSessionDataTask *) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion
965 { 1014 {
966 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]]; 1015 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]];
967 request.HTTPMethod = method; 1016 request.HTTPMethod = method;
968 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"]; 1017 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"];
969 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"]; 1018 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"];
970 if(token != nil && ![token isEqual: @""]) { 1019 if(token != nil && ![token isEqual: @""]) {
971 [request setValue: token forHTTPHeaderField: @"token"]; 1020 [request setValue: token forHTTPHeaderField: @"token"];
972 } 1021 }
973 [request setTimeoutInterval:self.timeOutInterval]; 1022 [request setTimeoutInterval:self.timeOutInterval];
974 1023
975 if (paras != nil) 1024 if (paras != nil)
976 { 1025 {
977 NSData *encodedData = [self _encodeDictionary: paras]; 1026 NSData *encodedData = [self _encodeDictionary: paras];
978 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"]; 1027 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"];
979 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"]; 1028 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"];
980 [request setHTTPBody: encodedData]; 1029 [request setHTTPBody: encodedData];
981 } 1030 }
982 1031
983 NSURLSession *session = [NSURLSession sharedSession]; 1032 NSURLSession *session = [NSURLSession sharedSession];
984 NSURLSessionDataTask *task = [session dataTaskWithRequest:request 1033 NSURLSessionDataTask *task = [session dataTaskWithRequest:request
985 completionHandler: 1034 completionHandler:
986 ^(NSData *data, NSURLResponse *response, NSError *error) { 1035 ^(NSData *data, NSURLResponse *response, NSError *error) {
987 if (completion == NULL) { 1036 if (completion == NULL) {
988 return ; 1037 return ;
989 } 1038 }
990 if (error == nil) 1039 if (error == nil)
991 { 1040 {
992 completion(data, nil); 1041 completion(data, nil);
993 } 1042 }
994 else 1043 else
995 { 1044 {
996 completion(nil, error); 1045 completion(nil, error);
997 } 1046 }
998 }]; 1047 }];
999 [task resume]; 1048 [task resume];
1000 return task; 1049 return task;
1001 } 1050 }
1002 1051
1003 -(void)waitUntilDone:(void(^)(void))waitBlock { 1052 -(void)waitUntilDone:(void(^)(void))waitBlock {
1004 //use your statement or call method here 1053 //use your statement or call method here
1005 if(waitBlock){ 1054 if(waitBlock){
1006 waitBlock(); 1055 waitBlock();
1007 } 1056 }
1008 } 1057 }
1009 1058
1010 @end 1059 @end
1011 1060