Compare View

switch
from
...
to
 
Commits (3)

Changes

Showing 15 changed files 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 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9497FD41F46EC1100E6AF8D /* MemberObject.m */; };
60 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */; }; 59 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9497FD41F46EC1100E6AF8D /* MemberObject.m */; };
61 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */; }; 60 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */; };
62 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */; }; 61 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */; };
63 E95F4CF41F48B39200D27E80 /* MyGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */; }; 62 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */; };
64 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */; }; 63 E95F4CF41F48B39200D27E80 /* MyGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */; };
65 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */; }; 64 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */; };
66 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E96855091F3C444900317CEF /* AutoTransButton.m */; }; 65 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */; };
67 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */; }; 66 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E96855091F3C444900317CEF /* AutoTransButton.m */; };
68 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */; }; 67 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */; };
69 E97588FC1F513BAD00782484 /* RankingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E97588FB1F513BAD00782484 /* RankingObject.m */; }; 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 E9497FD31F46EC1100E6AF8D /* MemberObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberObject.h; sourceTree = "<group>"; };
188 E9497FD41F46EC1100E6AF8D /* MemberObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MemberObject.m; sourceTree = "<group>"; };
189 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateGroupViewController.h; sourceTree = "<group>"; }; 187 E9497FD31F46EC1100E6AF8D /* MemberObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberObject.h; sourceTree = "<group>"; };
190 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateGroupViewController.m; sourceTree = "<group>"; }; 188 E9497FD41F46EC1100E6AF8D /* MemberObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MemberObject.m; sourceTree = "<group>"; };
191 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CreateGroupViewController.xib; sourceTree = "<group>"; }; 189 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateGroupViewController.h; sourceTree = "<group>"; };
192 E95F4CF01F48B39200D27E80 /* MyGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyGroupViewController.h; sourceTree = "<group>"; }; 190 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateGroupViewController.m; sourceTree = "<group>"; };
193 E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyGroupViewController.m; sourceTree = "<group>"; }; 191 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CreateGroupViewController.xib; sourceTree = "<group>"; };
194 E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MyGroupViewController.xib; sourceTree = "<group>"; }; 192 E95F4CF01F48B39200D27E80 /* MyGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyGroupViewController.h; sourceTree = "<group>"; };
195 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingTableViewCell.h; sourceTree = "<group>"; }; 193 E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyGroupViewController.m; sourceTree = "<group>"; };
196 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingTableViewCell.m; sourceTree = "<group>"; }; 194 E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MyGroupViewController.xib; sourceTree = "<group>"; };
197 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingTableViewCell.xib; sourceTree = "<group>"; }; 195 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingTableViewCell.h; sourceTree = "<group>"; };
198 E96855081F3C444900317CEF /* AutoTransButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransButton.h; sourceTree = "<group>"; }; 196 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingTableViewCell.m; sourceTree = "<group>"; };
199 E96855091F3C444900317CEF /* AutoTransButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransButton.m; sourceTree = "<group>"; }; 197 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingTableViewCell.xib; sourceTree = "<group>"; };
200 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSRecentTopicTableViewCell.h; sourceTree = "<group>"; }; 198 E96855081F3C444900317CEF /* AutoTransButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransButton.h; sourceTree = "<group>"; };
201 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSRecentTopicTableViewCell.m; sourceTree = "<group>"; }; 199 E96855091F3C444900317CEF /* AutoTransButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransButton.m; sourceTree = "<group>"; };
202 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSRecentTopicTableViewCell.xib; sourceTree = "<group>"; }; 200 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSRecentTopicTableViewCell.h; sourceTree = "<group>"; };
203 E97588FA1F513BAD00782484 /* RankingObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingObject.h; sourceTree = "<group>"; }; 201 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSRecentTopicTableViewCell.m; sourceTree = "<group>"; };
204 E97588FB1F513BAD00782484 /* RankingObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingObject.m; 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 E9D9091F1F3D559D004CF99F /* TweetObject.h */,
292 E9D909201F3D559D004CF99F /* TweetObject.m */,
293 E933E6721F3E0E4E002926F5 /* GroupObject.h */, 291 E9D9091F1F3D559D004CF99F /* TweetObject.h */,
294 E933E6731F3E0E4E002926F5 /* GroupObject.m */, 292 E9D909201F3D559D004CF99F /* TweetObject.m */,
295 E9497FD31F46EC1100E6AF8D /* MemberObject.h */, 293 E933E6721F3E0E4E002926F5 /* GroupObject.h */,
296 E9497FD41F46EC1100E6AF8D /* MemberObject.m */, 294 E933E6731F3E0E4E002926F5 /* GroupObject.m */,
297 E97588FA1F513BAD00782484 /* RankingObject.h */, 295 E9497FD31F46EC1100E6AF8D /* MemberObject.h */,
298 E97588FB1F513BAD00782484 /* RankingObject.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 E97588FC1F513BAD00782484 /* RankingObject.m in Sources */, 871 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */,
871 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */, 872 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */,
872 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */, 873 6E18CEDC1F2E40F50029891F /* User.m in Sources */,
873 6E18CEDC1F2E40F50029891F /* User.m in Sources */, 874 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */,
874 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */, 875 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */,
875 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */, 876 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */,
876 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */, 877 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */,
877 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */, 878 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */,
878 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */, 879 6E84E3761F27A701001EB88E /* main.m in Sources */,
879 6E84E3761F27A701001EB88E /* main.m in Sources */, 880 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */,
880 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */, 881 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */,
881 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */, 882 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */,
882 E95F4CF31F48B39200D27E80 /* MyGroupViewController.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(_curPage == 1) { 67 if(array.count != 0) {
65 [_curDataList removeAllObjects];
66 }
67 if(array.count != 0) {
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 "HistoryObject.h"
18 #import "User.h" 17 #import "HistoryObject.h"
19 #import "TopObject.h" 18 #import "User.h"
20 #import "RankingObject.h" 19 #import "TopObject.h"
20 #import "RankingObject.h"
21 21
22 #endif /* Entities_h */ 22 #endif /* Entities_h */
LifeLog/LifeLog/HistoryViewController.m
1 // 1 //
2 // HistoryViewController.m 2 // HistoryViewController.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 "HistoryViewController.h" 9 #import "HistoryViewController.h"
10 #import "Utilities.h" 10 #import "Utilities.h"
11 #import "ServerAPI.h" 11 #import "ServerAPI.h"
12 12
13 #import "HistoryListTableViewCell.h" 13 #import "HistoryListTableViewCell.h"
14 14
15 @interface HistoryViewController () 15 @interface HistoryViewController ()
16 16
17 @end 17 @end
18 18
19 @implementation HistoryViewController 19 @implementation HistoryViewController
20 20
21 - (void)viewDidLoad { 21 - (void)viewDidLoad {
22 [super viewDidLoad]; 22 [super viewDidLoad];
23 // Do any additional setup after loading the view from its nib. 23 // Do any additional setup after loading the view from its nib.
24 self.title = NSLocalizedString(@"lifelog.history.title", nil); 24 self.title = NSLocalizedString(@"lifelog.history.title", nil);
25 25
26 _isDisableLoadMore = true; 26 _isDisableLoadMore = true;
27 27
28 [self setupView]; 28 [self setupView];
29 [self setupChartView]; 29 [self setupChartView];
30 30
31 _startDate = [NSDate date]; 31 _startDate = [NSDate date];
32 _endDate = _startDate; 32 _endDate = _startDate;
33 33
34 self.lblDatetime.text = [Utilities stringFromDate:_endDate withFormat:@"YYYY年MM月dd日 EEEE" locale:@"ja_JP"]; 34 self.lblDatetime.text = [Utilities stringFromDate:_endDate withFormat:@"YYYY年MM月dd日 EEEE" locale:@"ja_JP"];
35 35
36 [self checkRequestData]; 36 [self checkRequestData];
37 37
38 //register nib for table view 38 //register nib for table view
39 [self.tableBase registerNib:[UINib nibWithNibName:@"HistoryListTableViewCell" bundle:nil] forCellReuseIdentifier:@"HistoryListCell"]; 39 [self.tableBase registerNib:[UINib nibWithNibName:@"HistoryListTableViewCell" bundle:nil] forCellReuseIdentifier:@"HistoryListCell"];
40 } 40 }
41 41
42 - (void)viewDidAppear:(BOOL) animated 42 - (void)viewDidAppear:(BOOL) animated
43 { 43 {
44 [super viewDidAppear:animated]; 44 [super viewDidAppear:animated];
45 self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 400); 45 self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 400);
46 [self.scrollView setNeedsLayout]; 46 [self.scrollView setNeedsLayout];
47 [self.scrollView setNeedsUpdateConstraints]; 47 [self.scrollView setNeedsUpdateConstraints];
48 48
49 } 49 }
50 50
51 - (void)didReceiveMemoryWarning { 51 - (void)didReceiveMemoryWarning {
52 [super didReceiveMemoryWarning]; 52 [super didReceiveMemoryWarning];
53 // Dispose of any resources that can be recreated. 53 // Dispose of any resources that can be recreated.
54 } 54 }
55 55
56 - (void)setupView { 56 - (void)setupView {
57 NSArray *typeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.history.type.1", nil), NSLocalizedString(@"lifelog.history.type.2", nil), NSLocalizedString(@"lifelog.history.type.3", nil), NSLocalizedString(@"lifelog.history.type.4", nil), NSLocalizedString(@"lifelog.history.type.5", nil), nil]; 57 NSArray *typeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.history.type.1", nil), NSLocalizedString(@"lifelog.history.type.2", nil), NSLocalizedString(@"lifelog.history.type.3", nil), NSLocalizedString(@"lifelog.history.type.4", nil), NSLocalizedString(@"lifelog.history.type.5", nil), nil];
58 [self.viewCollectionType setButtonNumber:typeTitle.count]; 58 [self.viewCollectionType setButtonNumber:typeTitle.count];
59 [self.viewCollectionType setSpacing:2]; 59 [self.viewCollectionType setSpacing:2];
60 [self.viewCollectionType setArrayTitle:typeTitle]; 60 [self.viewCollectionType setArrayTitle:typeTitle];
61 self.viewCollectionType.changeCurrentIndex = ^(int index){ 61 self.viewCollectionType.changeCurrentIndex = ^(int index){
62 [self changeDate]; 62 [self changeDate];
63 }; 63 };
64 64
65 NSArray *modeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.history.mode.1", nil), NSLocalizedString(@"lifelog.history.mode.2", nil), NSLocalizedString(@"lifelog.history.mode.3", nil), nil]; 65 NSArray *modeTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.history.mode.1", nil), NSLocalizedString(@"lifelog.history.mode.2", nil), NSLocalizedString(@"lifelog.history.mode.3", nil), nil];
66 [self.viewCollectionMode setButtonNumber:modeTitle.count]; 66 [self.viewCollectionMode setButtonNumber:modeTitle.count];
67 [self.viewCollectionMode setSpacing:0]; 67 [self.viewCollectionMode setSpacing:0];
68 [self.viewCollectionMode setCornerRadius:0]; 68 [self.viewCollectionMode setCornerRadius:0];
69 [self.viewCollectionMode setNormalColor:[Utilities convertHecToColor:0x191919] highlightColor:[Utilities convertHecToColor:0x474747] textColor:[UIColor whiteColor]]; 69 [self.viewCollectionMode setNormalColor:[Utilities convertHecToColor:0x191919] highlightColor:[Utilities convertHecToColor:0x474747] textColor:[UIColor whiteColor]];
70 [self.viewCollectionMode setArrayTitle:modeTitle]; 70 [self.viewCollectionMode setArrayTitle:modeTitle];
71 self.viewCollectionMode.changeCurrentIndex = ^(int index){ 71 self.viewCollectionMode.changeCurrentIndex = ^(int index){
72 if(self.tableBase.alpha == 0.0) { 72 if(self.tableBase.alpha == 0.0) {
73 [self updateView]; 73 [self updateView];
74 } 74 }
75 else { 75 else {
76 NSArray * list = [_curListArray objectAtIndex:index]; 76 NSArray * list = [_curListArray objectAtIndex:index];
77 [self updateTableData:list error:nil]; 77 [self updateTableData:list error:nil];
78 } 78 }
79 }; 79 };
80 80
81 NSArray *shareTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.history.share.1", nil), NSLocalizedString(@"lifelog.history.share.2", nil), NSLocalizedString(@"lifelog.history.share.3", nil), NSLocalizedString(@"lifelog.history.share.4", nil), NSLocalizedString(@"lifelog.history.share.5", nil), nil]; 81 NSArray *shareTitle = [NSArray arrayWithObjects:NSLocalizedString(@"lifelog.history.share.1", nil), NSLocalizedString(@"lifelog.history.share.2", nil), NSLocalizedString(@"lifelog.history.share.3", nil), NSLocalizedString(@"lifelog.history.share.4", nil), NSLocalizedString(@"lifelog.history.share.5", nil), nil];
82 [self.viewCollectionShare setButtonNumber:typeTitle.count]; 82 [self.viewCollectionShare setButtonNumber:typeTitle.count];
83 [self.viewCollectionShare setSpacing:3]; 83 [self.viewCollectionShare setSpacing:3];
84 [self.viewCollectionShare setArrayTitle:shareTitle]; 84 [self.viewCollectionShare setArrayTitle:shareTitle];
85 [self.viewCollectionShare disableSelection]; 85 [self.viewCollectionShare disableSelection];
86 86
87 //add tap gesture for enable tap on gesture on CollectionView in ScrollView 87 //add tap gesture for enable tap on gesture on CollectionView in ScrollView
88 UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gestureAction:)]; 88 UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gestureAction:)];
89 [recognizer setNumberOfTapsRequired:1]; 89 [recognizer setNumberOfTapsRequired:1];
90 self.scrollView.userInteractionEnabled = YES; 90 self.scrollView.userInteractionEnabled = YES;
91 [self.scrollView addGestureRecognizer:recognizer]; 91 [self.scrollView addGestureRecognizer:recognizer];
92 } 92 }
93 93
94 - (void)setupChartView { 94 - (void)setupChartView {
95 self.viewBarChart.chartDescription.enabled = NO; 95 self.viewBarChart.chartDescription.enabled = NO;
96 self.viewBarChart.leftAxis.drawGridLinesEnabled = NO; 96 self.viewBarChart.leftAxis.drawGridLinesEnabled = NO;
97 self.viewBarChart.rightAxis.drawGridLinesEnabled = NO; 97 self.viewBarChart.rightAxis.drawGridLinesEnabled = NO;
98 self.viewBarChart.legend.enabled = NO; 98 self.viewBarChart.legend.enabled = NO;
99 99
100 ChartXAxis *xAxis = self.viewBarChart.xAxis; 100 ChartXAxis *xAxis = self.viewBarChart.xAxis;
101 xAxis.labelPosition = XAxisLabelPositionBottom; 101 xAxis.labelPosition = XAxisLabelPositionBottom;
102 xAxis.drawGridLinesEnabled = NO; 102 xAxis.drawGridLinesEnabled = NO;
103 xAxis.drawAxisLineEnabled = NO; 103 xAxis.drawAxisLineEnabled = NO;
104 xAxis.drawLabelsEnabled = YES; 104 xAxis.drawLabelsEnabled = YES;
105 xAxis.labelPosition = XAxisLabelPositionBottom; 105 xAxis.labelPosition = XAxisLabelPositionBottom;
106 xAxis.labelFont = [UIFont systemFontOfSize:10.f]; 106 xAxis.labelFont = [UIFont systemFontOfSize:10.f];
107 xAxis.labelTextColor = [UIColor whiteColor]; 107 xAxis.labelTextColor = [UIColor whiteColor];
108 xAxis.granularity = 1.0; // only intervals of 1 day 108 xAxis.granularity = 1.0; // only intervals of 1 day
109 xAxis.labelCount = 8; 109 xAxis.labelCount = 8;
110 110
111 self.viewBarChart.leftAxis.drawAxisLineEnabled = NO; 111 self.viewBarChart.leftAxis.drawAxisLineEnabled = NO;
112 self.viewBarChart.rightAxis.drawAxisLineEnabled = NO; 112 self.viewBarChart.rightAxis.drawAxisLineEnabled = NO;
113 } 113 }
114 114
115 -(void) updateView { 115 -(void) updateView {
116 HistoryObject * obj = [_curHisArray objectAtIndex:self.viewCollectionMode.getCurrentIndex]; 116 HistoryObject * obj = [_curHisArray objectAtIndex:self.viewCollectionMode.getCurrentIndex];
117 self.lblStep.text = [NSString stringWithFormat:@"%d step", obj.step]; 117 self.lblStep.text = [NSString stringWithFormat:@"%d step", obj.step];
118 self.lblCircleStep.text = self.lblStep.text; 118 self.lblCircleStep.text = self.lblStep.text;
119 self.lblRemaining.text = [NSString stringWithFormat:@"%d step", obj.missing]; 119 self.lblRemaining.text = [NSString stringWithFormat:@"%d step", obj.missing];
120 self.lblCircleRemain.text = [NSString stringWithFormat:@"目標まであと\n%d stepです", obj.missing]; 120 self.lblCircleRemain.text = [NSString stringWithFormat:@"目標まであと\n%d stepです", obj.missing];
121 self.lblPercent.text = [NSString stringWithFormat:@"%0.2f%%", obj.percent]; 121 self.lblPercent.text = [NSString stringWithFormat:@"%0.2f%%", obj.percent];
122 self.lblCalories.text = [NSString stringWithFormat:@"%0.2f kcal", obj.calories]; 122 self.lblCalories.text = [NSString stringWithFormat:@"%0.2f kcal", obj.calories];
123 self.lblDistance.text = [NSString stringWithFormat:@"%0.1f KM", obj.distance]; 123 self.lblDistance.text = [NSString stringWithFormat:@"%0.1f KM", obj.distance];
124 self.lblTime.text = [Utilities convertSecondToShortTime:obj.time]; 124 self.lblTime.text = [Utilities convertSecondToShortTime:obj.time];
125 [self updateGraphView]; 125 [self updateGraphView];
126 } 126 }
127 127
128 -(void) updateGraphView { 128 -(void) updateGraphView {
129 HistoryObject * obj = [_curHisArray objectAtIndex:self.viewCollectionMode.getCurrentIndex]; 129 HistoryObject * obj = [_curHisArray objectAtIndex:self.viewCollectionMode.getCurrentIndex];
130 130
131 NSMutableArray *yVals = [[NSMutableArray alloc] init]; 131 NSMutableArray *yVals = [[NSMutableArray alloc] init];
132 for (int i = 0; i < obj.dataGraph.count; i++) 132 for (int i = 0; i < obj.dataGraph.count; i++)
133 { 133 {
134 [yVals addObject:[[BarChartDataEntry alloc] initWithX:i y:[[obj.dataGraph objectAtIndex:i] doubleValue]]]; 134 [yVals addObject:[[BarChartDataEntry alloc] initWithX:i y:[[obj.dataGraph objectAtIndex:i] doubleValue]]];
135 } 135 }
136 136
137 BarChartDataSet *set1 = nil; 137 BarChartDataSet *set1 = nil;
138 if (self.viewBarChart.data.dataSetCount > 0) 138 if (self.viewBarChart.data.dataSetCount > 0)
139 { 139 {
140 set1 = (BarChartDataSet *)self.viewBarChart.data.dataSets[0]; 140 set1 = (BarChartDataSet *)self.viewBarChart.data.dataSets[0];
141 set1.values = yVals; 141 set1.values = yVals;
142
143 NSMutableArray *color = [[NSMutableArray alloc] init];
144 for(int i = 0; i < yVals.count; i++) {
145 BarChartDataEntry *en = yVals[i];
146 if(obj.step != 0) {
147 double percent = en.y / obj.step * 100;
148 if(percent > 80) {
149 [color addObject:[UIColor redColor]];
150 }
151 else if(percent > 60) {
152 [color addObject:[UIColor yellowColor]];
153 }
154 else {
155 [color addObject:[UIColor whiteColor]];
156 }
157 }
158 else {
159 [color addObject:[UIColor whiteColor]];
160 }
161 }
162 [set1 setColors:color];
163
142 164 [self.viewBarChart.data notifyDataChanged];
143 NSMutableArray *color = [[NSMutableArray alloc] init]; 165 [self.viewBarChart notifyDataSetChanged];
144 for(int i = 0; i < yVals.count; i++) { 166 }
145 BarChartDataEntry *en = yVals[i]; 167 else
146 if(obj.step != 0) { 168 {
147 double percent = en.y / obj.step * 100; 169 set1 = [[BarChartDataSet alloc] initWithValues:yVals label:@""];
148 if(percent > 80) {
149 [color addObject:[UIColor redColor]]; 170
171 NSMutableArray *color = [[NSMutableArray alloc] init];
172 for(int i = 0; i < yVals.count; i++) {
173 BarChartDataEntry *en = yVals[i];
174 if(obj.step != 0) {
175 double percent = en.y / obj.step * 100;
176 if(percent > 80) {
177 [color addObject:[UIColor redColor]];
178 }
179 else if(percent > 60) {
180 [color addObject:[UIColor yellowColor]];
181 }
182 else {
183 [color addObject:[UIColor whiteColor]];
184 }
185 }
186 else {
187 [color addObject:[UIColor whiteColor]];
188 }
189 }
190 [set1 setColors:color];
150 } 191 NSMutableArray *dataSets = [[NSMutableArray alloc] init];
151 else if(percent > 60) { 192 [dataSets addObject:set1];
152 [color addObject:[UIColor yellowColor]]; 193
153 } 194 BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets];
154 else { 195 data.barWidth = 0.5f;
155 [color addObject:[UIColor whiteColor]]; 196
156 } 197 self.viewBarChart.data = data;
157 } 198 }
158 else { 199 }
159 [color addObject:[UIColor whiteColor]]; 200
160 } 201 -(void) checkRequestData {
161 } 202 if(self.tableBase.alpha == 0.0) {
162 [set1 setColors:color]; 203 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
163 204 MBProgressHUD *hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
164 [self.viewBarChart.data notifyDataChanged]; 205 [[ServerAPI server] requestHistory:token startDate:_startDate endDate:_endDate CompletionHandler:^(NSArray *array, NSError *error) {
165 [self.viewBarChart notifyDataSetChanged]; 206 HistoryViewController __weak *weakSelf = self;
166 } 207 dispatch_async(dispatch_get_main_queue(), ^{
167 else 208 if(hudView != nil) {
168 { 209 [hudView hideAnimated:true];
169 set1 = [[BarChartDataSet alloc] initWithValues:yVals label:@""]; 210 }
170 211 });
171 NSMutableArray *color = [[NSMutableArray alloc] init]; 212 if(error == nil) {
172 for(int i = 0; i < yVals.count; i++) { 213 _curHisArray = array;
173 BarChartDataEntry *en = yVals[i]; 214 dispatch_async(dispatch_get_main_queue(), ^{
174 if(obj.step != 0) { 215 [weakSelf updateView];
175 double percent = en.y / obj.step * 100; 216 });
176 if(percent > 80) { 217 }
177 [color addObject:[UIColor redColor]]; 218 else {
178 } 219 dispatch_async(dispatch_get_main_queue(), ^{
179 else if(percent > 60) { 220 NSString *message = [error.userInfo objectForKey:@"message"];
180 [color addObject:[UIColor yellowColor]]; 221 [Utilities showErrorMessage:message withViewController:weakSelf];
181 } 222 });
182 else { 223 }
183 [color addObject:[UIColor whiteColor]]; 224 }];
184 } 225 }
185 } 226 else {
186 else { 227 [self resetData];
187 [color addObject:[UIColor whiteColor]]; 228 }
188 } 229 }
189 } 230
190 [set1 setColors:color]; 231 -(void) callRequestToUpdateData {
191 NSMutableArray *dataSets = [[NSMutableArray alloc] init]; 232 [super callRequestToUpdateData];
192 [dataSets addObject:set1]; 233 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
193 234
194 BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets]; 235 MBProgressHUD *hudView = nil;
195 data.barWidth = 0.5f; 236 if(_curPage == 1 && !self.refreshControl.isRefreshing) {
196 237 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
197 self.viewBarChart.data = data; 238 }
198 } 239 [[ServerAPI server] requestHistoryList:token startDate:_startDate endDate:_endDate CompletionHandler:^(NSArray *array, NSError *error) {
199 } 240 dispatch_async(dispatch_get_main_queue(), ^{
200 241 if(hudView != nil) {
201 -(void) checkRequestData { 242 [hudView hideAnimated:true];
202 if(self.tableBase.alpha == 0.0) { 243 }
203 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 244 });
204 MBProgressHUD *hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true]; 245 HistoryViewController __weak *weakSelf = self;
205 [[ServerAPI server] requestHistory:token startDate:_startDate endDate:_endDate CompletionHandler:^(NSArray *array, NSError *error) { 246 if(error == nil) {
206 HistoryViewController __weak *weakSelf = self; 247 _curListArray = array;
207 dispatch_async(dispatch_get_main_queue(), ^{ 248 NSArray * list = [array objectAtIndex:weakSelf.viewCollectionMode.getCurrentIndex];
208 if(hudView != nil) { 249 [weakSelf updateTableData:list error:error];
209 [hudView hideAnimated:true]; 250 }
210 } 251 else {
211 }); 252 [weakSelf updateTableData:array error:error];
212 if(error == nil) { 253 }
213 _curHisArray = array; 254 }];
214 dispatch_async(dispatch_get_main_queue(), ^{ 255 }
215 [weakSelf updateView]; 256
216 }); 257 - (void) changeDate {
217 } 258 switch (self.viewCollectionType.getCurrentIndex) {
218 else { 259 case 1:
219 dispatch_async(dispatch_get_main_queue(), ^{ 260 _startDate = [_endDate dateByAddingTimeInterval:-86400 * 7];
220 NSString *message = [error.userInfo objectForKey:@"message"]; 261 break;
221 [Utilities showErrorMessage:message withViewController:weakSelf]; 262 case 2:
222 }); 263 _startDate = [_endDate dateByAddingTimeInterval:-86400 * 30];
223 } 264 break;
224 }]; 265 case 3:
225 } 266 _startDate = [_endDate dateByAddingTimeInterval:-86400 * 30 * 3];
226 else { 267 break;
227 [self resetData]; 268 case 4:
228 } 269 _startDate = [_endDate dateByAddingTimeInterval:-86400 * 30 * 6];
229 } 270 break;
230 271 default:
231 -(void) callRequestToUpdateData { 272 _startDate = _endDate;
232 [super callRequestToUpdateData]; 273 break;
233 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 274 }
234 275 if(_startDate == _endDate) {
235 MBProgressHUD *hudView = nil; 276 self.lblDatetime.text = [Utilities stringFromDate:_endDate withFormat:@"YYYY年MM月dd日 EEEE" locale:@"ja_JP"];
236 if(_curPage == 1 && !self.refreshControl.isRefreshing) { 277 }
237 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true]; 278 else {
238 } 279 NSString * startDateString = [Utilities stringFromDate:_startDate withFormat:@"YYYY年MM月dd日" locale:@"ja_JP"];
239 [[ServerAPI server] requestHistoryList:token startDate:_startDate endDate:_endDate CompletionHandler:^(NSArray *array, NSError *error) { 280 NSString * endDateString = [Utilities stringFromDate:_endDate withFormat:@"YYYY年MM月dd日" locale:@"ja_JP"];
240 dispatch_async(dispatch_get_main_queue(), ^{ 281 self.lblDatetime.text = [NSString stringWithFormat:@"%@-%@", startDateString, endDateString];
241 if(hudView != nil) { 282 }
242 [hudView hideAnimated:true]; 283 [self checkRequestData];
243 } 284 }
244 }); 285
245 HistoryViewController __weak *weakSelf = self; 286 #pragma mark IBAction
246 if(error == nil) { 287 -(void) swipeAction:(UISwipeGestureRecognizer *)sender {
247 _curListArray = array; 288 bool alphaValue = self.scrollView.alpha == 1.0 ? 1.0 : 0.0;
248 NSArray * list = [array objectAtIndex:weakSelf.viewCollectionMode.getCurrentIndex]; 289 [UIView animateWithDuration:0.5 animations:^{
249 [weakSelf updateTableData:list error:error]; 290 self.tableBase.alpha = alphaValue;
250 } 291 self.scrollView.alpha = 1.0 - alphaValue;
251 else { 292 } completion:^(BOOL completed) {
252 [weakSelf updateTableData:array error:error]; 293 [self checkRequestData];
253 } 294 }];
254 }]; 295 }
255 } 296
256 297 - (IBAction)clickBackward:(UIButton *)sender {
257 - (void) changeDate { 298 _endDate = [_endDate dateByAddingTimeInterval:-86400];
258 switch (self.viewCollectionType.getCurrentIndex) { 299 [self changeDate];
259 case 1: 300 }
260 _startDate = [_endDate dateByAddingTimeInterval:-86400 * 7]; 301
261 break; 302 - (IBAction)clickForward:(UIButton *)sender {
262 case 2: 303 _endDate = [_endDate dateByAddingTimeInterval:86400];
263 _startDate = [_endDate dateByAddingTimeInterval:-86400 * 30]; 304 [self changeDate];
264 break; 305 }
265 case 3: 306
266 _startDate = [_endDate dateByAddingTimeInterval:-86400 * 30 * 3]; 307 -(void)gestureAction:(UITapGestureRecognizer *) sender
267 break; 308 {
268 case 4: 309 CGPoint touchLocation = [sender locationOfTouch:0 inView:self.viewCollectionShare];
269 _startDate = [_endDate dateByAddingTimeInterval:-86400 * 30 * 6]; 310 NSIndexPath *indexPath = [self.viewCollectionShare.collectionView indexPathForItemAtPoint:touchLocation];
270 break; 311 NSString * content = @"Finish 500 steps";
271 default: 312 HistoryViewController __weak *weakSelf = self;
272 _startDate = _endDate; 313 if(indexPath != NULL) {
273 break; 314 switch (indexPath.row) {
274 } 315 case 0: //share facebook
275 if(_startDate == _endDate) { 316 [Utilities shareFacebook:content withViewController:weakSelf];
276 self.lblDatetime.text = [Utilities stringFromDate:_endDate withFormat:@"YYYY年MM月dd日 EEEE" locale:@"ja_JP"]; 317 break;
277 } 318 case 1: //share twitter
278 else { 319 [Utilities shareTwitter:content withViewController:weakSelf];
279 NSString * startDateString = [Utilities stringFromDate:_startDate withFormat:@"YYYY年MM月dd日" locale:@"ja_JP"]; 320 break;
280 NSString * endDateString = [Utilities stringFromDate:_endDate withFormat:@"YYYY年MM月dd日" locale:@"ja_JP"]; 321 case 2 : //share line
281 self.lblDatetime.text = [NSString stringWithFormat:@"%@-%@", startDateString, endDateString]; 322 [Utilities shareLine:content withViewController:weakSelf];
282 } 323 break;
283 [self checkRequestData]; 324 case 3: // share email
284 } 325 [Utilities shareEmail:content withViewController:weakSelf];
285 326 break;
286 #pragma mark IBAction 327 default: //share other
287 -(void) swipeAction:(UISwipeGestureRecognizer *)sender { 328 [Utilities shareOther:content withViewController:weakSelf];
288 bool alphaValue = self.scrollView.alpha == 1.0 ? 1.0 : 0.0; 329 break;
289 [UIView animateWithDuration:0.5 animations:^{ 330 }
290 self.tableBase.alpha = alphaValue; 331 }
291 self.scrollView.alpha = 1.0 - alphaValue; 332 }
292 } completion:^(BOOL completed) { 333
293 [self checkRequestData]; 334 #pragma mark UITableView Delegate
294 }]; 335 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
295 } 336 HistoryListTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"HistoryListCell"];
296 337 HistoryObject * obj = [_curDataList objectAtIndex:indexPath.row];
297 - (IBAction)clickBackward:(UIButton *)sender { 338 cell.lblTitle.text = [Utilities stringFromDate:obj.date withFormat:@"dd日 (EEEE)" locale:@"ja_JP"];
298 _endDate = [_endDate dateByAddingTimeInterval:-86400]; 339 cell.lblStep.text = [NSString stringWithFormat:@"%d", obj.step];
299 [self changeDate]; 340 cell.lblDiff.text = [NSString stringWithFormat:@"%d", obj.step_diff];
300 } 341 cell.imgArrow.image = (obj.step_diff > 0) ? [UIImage imageNamed:@"arrow_incre"] : [UIImage imageNamed:@"arrow_decre"];
301 342 cell.lblPower.text = [NSString stringWithFormat:@"%0.2f", obj.calories];
302 - (IBAction)clickForward:(UIButton *)sender { 343 cell.lblDistance.text = [NSString stringWithFormat:@"%0.1f", obj.distance];
303 _endDate = [_endDate dateByAddingTimeInterval:86400]; 344 cell.lblDuration.text = [Utilities convertSecondToShortTime:obj.time];
304 [self changeDate]; 345 return cell;
305 } 346 }
306 347
307 -(void)gestureAction:(UITapGestureRecognizer *) sender 348 @end
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
1 // 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
1 // 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 #import "RankingObject.h" 11
11 12 @interface RankingTableViewCell : UITableViewCell
12 @interface RankingTableViewCell : UITableViewCell 13 @property (weak, nonatomic) IBOutlet UILabel *lblIndex;
13 @property (weak, nonatomic) IBOutlet UILabel *lblIndex; 14 @property (weak, nonatomic) IBOutlet UILabel *lblName;
14 @property (weak, nonatomic) IBOutlet UILabel *lblName; 15 @property (weak, nonatomic) IBOutlet UILabel *lblStep;
15 @property (weak, nonatomic) IBOutlet UILabel *lblStep; 16 @property (weak, nonatomic) IBOutlet UILabel *lblTime;
16 @property (weak, nonatomic) IBOutlet UILabel *lblTime; 17 @property (weak, nonatomic) IBOutlet UILabel *lblDistance;
17 @property (weak, nonatomic) IBOutlet UILabel *lblDistance; 18
18 19 @property (weak, nonatomic) IBOutlet UIImageView *imgAvatar;
20
21 -(void) setRankingData : (RankingObject *) object;
22
19 @property (weak, nonatomic) IBOutlet UIImageView *imgAvatar; 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 #import <SDWebImage/UIImageView+WebCache.h> 11
12 #import "Utilities.h"
11 13 @implementation RankingTableViewCell
12 #import "Utilities.h" 14
13 @implementation RankingTableViewCell 15 - (void)awakeFromNib {
14 16 [super awakeFromNib];
15 - (void)awakeFromNib { 17 // Initialization code
16 [super awakeFromNib]; 18 }
17 // Initialization code 19
18 } 20 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
19 21 [super setSelected:selected animated:animated];
20 - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 22
21 [super setSelected:selected animated:animated]; 23 // Configure the view for the selected state
22 24 }
23 // Configure the view for the selected state 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 } 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 "BaseTableViewController.h" 12 #import "CollectionView.h"
12 #import "CollectionView.h" 13
13 14 @interface RankingViewController : BaseTableViewController {
15 NSDate * _startDate;
16 NSDate * _endDate;
17 }
14 @interface RankingViewController : BaseTableViewController { 18
15 NSDate * _startDate; 19 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionTime;
16 NSDate * _endDate; 20 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionMode;
17 } 21 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionType;
18 22 @property (weak, nonatomic) IBOutlet UILabel *lblDateTime;
19 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionTime;
20 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionMode; 23
21 @property (weak, nonatomic) IBOutlet CollectionView *viewCollectionType; 24 - (IBAction)clickButton:(UIButton *)sender;
22 @property (weak, nonatomic) IBOutlet UILabel *lblDateTime; 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 #import "ServerAPI.h" 15 @interface RankingViewController ()
13 #import "Utilities.h" 16
14 17 @end
15 @interface RankingViewController () 18
16 19 @implementation RankingViewController
17 @end 20
18 21 - (void)viewDidLoad {
19 @implementation RankingViewController 22 [super viewDidLoad];
20 23 // Do any additional setup after loading the view from its nib.
21 - (void)viewDidLoad { 24 self.title = NSLocalizedString(@"lifelog.rank.title", nil);
22 [super viewDidLoad]; 25
23 // Do any additional setup after loading the view from its nib. 26 [self setupView];
24 self.title = NSLocalizedString(@"lifelog.rank.title", nil); 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 32 //register nib for table view
26 [self setupView]; 33 [self.tableBase registerNib:[UINib nibWithNibName:@"RankingTableViewCell" bundle:nil] forCellReuseIdentifier:@"RankCell"];
34
35 [self callRequestToUpdateData];
27 36 }
28 _startDate = [NSDate date]; 37
29 _endDate = _startDate; 38 - (void)didReceiveMemoryWarning {
30 self.lblDateTime.text = [Utilities stringFromDate:_endDate withFormat:@"YYYY年MM月dd日 EEEE" locale:@"ja_JP"]; 39 [super didReceiveMemoryWarning];
31 40 // Dispose of any resources that can be recreated.
32 //register nib for table view 41 }
33 [self.tableBase registerNib:[UINib nibWithNibName:@"RankingTableViewCell" bundle:nil] forCellReuseIdentifier:@"RankCell"]; 42
34 43 #pragma mark Setup and Update View
35 [self callRequestToUpdateData]; 44
36 } 45 - (void)setupView {
37 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 - (void)didReceiveMemoryWarning { 47 [self.viewCollectionTime setButtonNumber:timeTitle.count];
39 [super didReceiveMemoryWarning]; 48 [self.viewCollectionTime setSpacing:1];
40 // Dispose of any resources that can be recreated. 49 [self.viewCollectionTime setArrayTitle:timeTitle];
41 } 50 self.viewCollectionTime.changeCurrentIndex = ^(int index){
42 51 [self changeDate];
43 #pragma mark Setup and Update View 52 };
44 53
45 - (void)setupView { 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 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]; 55 [self.viewCollectionMode setButtonNumber:modeTitle.count];
47 [self.viewCollectionTime setButtonNumber:timeTitle.count]; 56 [self.viewCollectionMode setSpacing:1];
48 [self.viewCollectionTime setSpacing:1]; 57 [self.viewCollectionMode setArrayTitle:modeTitle];
49 [self.viewCollectionTime setArrayTitle:timeTitle]; 58 self.viewCollectionMode.changeCurrentIndex = ^(int index){
50 self.viewCollectionTime.changeCurrentIndex = ^(int index){ 59 [self callRequestToUpdateData];
51 [self changeDate]; 60 };
52 }; 61
53 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 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]; 63 [self.viewCollectionType setButtonNumber:typeTitle.count];
55 [self.viewCollectionMode setButtonNumber:modeTitle.count]; 64 [self.viewCollectionType setSpacing:1];
56 [self.viewCollectionMode setSpacing:1]; 65 [self.viewCollectionType setArrayTitle:typeTitle];
57 [self.viewCollectionMode setArrayTitle:modeTitle]; 66 self.viewCollectionMode.changeCurrentIndex = ^(int index){
58 self.viewCollectionMode.changeCurrentIndex = ^(int index){ 67 [self callRequestToUpdateData];
59 [self callRequestToUpdateData]; 68 };
60 }; 69 }
61 70
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]; 71
63 [self.viewCollectionType setButtonNumber:typeTitle.count]; 72 #pragma mark IBAction function
64 [self.viewCollectionType setSpacing:1]; 73
65 [self.viewCollectionType setArrayTitle:typeTitle]; 74 - (IBAction)clickButton:(UIButton *)sender {
66 self.viewCollectionMode.changeCurrentIndex = ^(int index){ 75 }
67 [self callRequestToUpdateData]; 76
68 }; 77 #pragma mark UITableView Delegate
69 }
70
71
72 #pragma mark IBAction function
73
74 - (IBAction)clickButton:(UIButton *)sender {
75 }
76
77 #pragma mark UITableView Delegate
78
79 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
80 RankingTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RankCell"];
81 [cell setRankingData:[_curDataList objectAtIndex:indexPath.row]];
82 return cell;
83 }
84
85 #pragma mark Private function
86 - (void)callRequestToUpdateData {
87 [super callRequestToUpdateData]; 78
88 79 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
89 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 80 RankingTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RankCell"];
81 [cell setRankingData:[_curDataList objectAtIndex:indexPath.row]];
90 MBProgressHUD *hudView = nil; 82 return cell;
91 int mode = self.viewCollectionMode.getCurrentIndex + 1; 83 }
92 //dont have all 84
93 mode = fmin(mode, 3); 85 #pragma mark Private function
94 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="12118" systemVersion="16D32" 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="12086"/> 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="lblDateTime" destination="5Ro-k6-fvT" id="5uO-ff-Pmc"/> 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="tableBase" destination="R3A-K9-MFe" id="Tf9-Rg-PEW"/> 15 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
15 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> 16 <outlet property="viewCollectionMode" destination="B33-xX-Jro" id="HP4-Xb-LJm"/>
16 <outlet property="viewCollectionMode" destination="B33-xX-Jro" id="HP4-Xb-LJm"/> 17 <outlet property="viewCollectionTime" destination="syA-uK-pbr" id="WdA-Cq-Flj"/>
17 <outlet property="viewCollectionTime" destination="syA-uK-pbr" id="WdA-Cq-Flj"/> 18 <outlet property="viewCollectionType" destination="oUo-Eo-tz5" id="bjw-El-34G"/>
18 <outlet property="viewCollectionType" destination="oUo-Eo-tz5" id="bjw-El-34G"/> 19 </connections>
19 </connections> 20 </placeholder>
20 </placeholder> 21 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
21 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> 22 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
22 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> 23 <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"/> 24 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
24 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 25 <subviews>
25 <subviews> 26 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GBx-lY-9YI" userLabel="ViewHeader">
26 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GBx-lY-9YI" userLabel="ViewHeader"> 27 <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"/> 28 <subviews>
28 <subviews> 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 <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"> 30 <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"/> 31 <fontDescription key="fontDescription" type="system" pointSize="17"/>
31 <fontDescription key="fontDescription" type="system" pointSize="17"/> 32 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
32 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 33 <nil key="highlightedColor"/>
33 <nil key="highlightedColor"/> 34 <userDefinedRuntimeAttributes>
34 <userDefinedRuntimeAttributes> 35 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.rank.title"/>
35 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.rank.title"/> 36 </userDefinedRuntimeAttributes>
36 </userDefinedRuntimeAttributes> 37 </label>
37 </label> 38 <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"> 39 <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"/> 40 <constraints>
40 <constraints> 41 <constraint firstAttribute="width" constant="70" id="bEy-jt-69Q"/>
41 <constraint firstAttribute="width" constant="70" id="bEy-jt-69Q"/> 42 </constraints>
42 </constraints> 43 <state key="normal" image="today_back_button"/>
43 <state key="normal" image="today_back_button"/> 44 </button>
44 </button> 45 <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"> 46 <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"/> 47 <constraints>
47 <constraints> 48 <constraint firstAttribute="width" constant="45" id="nJ2-jH-Z45"/>
48 <constraint firstAttribute="width" constant="45" id="nJ2-jH-Z45"/> 49 </constraints>
49 </constraints> 50 <state key="normal" image="icon_menu"/>
50 <state key="normal" image="icon_menu"/> 51 </button>
51 </button> 52 </subviews>
52 </subviews> 53 <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"/> 54 <constraints>
54 <constraints> 55 <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"/> 56 <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"/> 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="leading" secondItem="GBx-lY-9YI" secondAttribute="leading" id="9ND-Te-qX9"/> 58 <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"/> 59 <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"/> 60 <constraint firstAttribute="height" constant="46" id="SDI-ij-KbH"/>
60 <constraint firstAttribute="height" constant="46" id="SDI-ij-KbH"/> 61 <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"/> 62 <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"/> 63 <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"/> 64 <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"/> 65 <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"/> 66 </constraints>
66 </constraints> 67 </view>
67 </view> 68 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="syA-uK-pbr" customClass="CollectionView">
68 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="syA-uK-pbr" customClass="CollectionView"> 69 <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"/> 70 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
70 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 71 <constraints>
71 <constraints> 72 <constraint firstAttribute="height" constant="30" id="ezW-Qs-M7K"/>
72 <constraint firstAttribute="height" constant="30" id="ezW-Qs-M7K"/> 73 </constraints>
73 </constraints> 74 </view>
74 </view> 75 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="B33-xX-Jro" customClass="CollectionView">
75 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="B33-xX-Jro" customClass="CollectionView"> 76 <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"/> 77 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
77 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 78 <constraints>
78 <constraints> 79 <constraint firstAttribute="height" constant="30" id="snn-FM-11r"/>
79 <constraint firstAttribute="height" constant="30" id="snn-FM-11r"/> 80 </constraints>
80 </constraints> 81 </view>
81 </view> 82 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="u5D-xz-8dK">
82 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="u5D-xz-8dK"> 83 <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"/> 84 <subviews>
84 <subviews> 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 <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"> 86 <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"/> 87 <string key="text" base64-UTF8="YES">
87 <string key="text" base64-UTF8="YES"> 88 MjAxNuW5tCAx5pyIMjLml6XjgIDvvI3jgIAyMDE35bm0IDHmnIgyMeaXpQ0KAA
88 MjAxNuW5tCAx5pyIMjLml6XjgIDvvI3jgIAyMDE35bm0IDHmnIgyMeaXpQ0KAA 89 </string>
89 </string> 90 <fontDescription key="fontDescription" type="system" pointSize="13"/>
90 <fontDescription key="fontDescription" type="system" pointSize="13"/> 91 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
91 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 92 <nil key="highlightedColor"/>
92 <nil key="highlightedColor"/> 93 </label>
93 </label> 94 <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"> 95 <rect key="frame" x="15" y="5" width="30" height="30"/>
95 <rect key="frame" x="15" y="5" width="30" height="30"/> 96 <constraints>
96 <constraints> 97 <constraint firstAttribute="height" constant="30" id="kEd-sQ-0ub"/>
97 <constraint firstAttribute="height" constant="30" id="kEd-sQ-0ub"/> 98 <constraint firstAttribute="width" constant="30" id="sFT-sr-7pL"/>
98 <constraint firstAttribute="width" constant="30" id="sFT-sr-7pL"/> 99 </constraints>
99 </constraints> 100 <state key="normal" image="icon_left"/>
100 <state key="normal" image="icon_left"/> 101 <connections>
101 <connections> 102 <action selector="clickButton:" destination="-1" eventType="touchUpInside" id="f1Y-rj-F7d"/>
102 <action selector="clickButton:" destination="-1" eventType="touchUpInside" id="f1Y-rj-F7d"/> 103 </connections>
103 </connections> 104 </button>
104 </button> 105 <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"> 106 <rect key="frame" x="330" y="5" width="30" height="30"/>
106 <rect key="frame" x="330" y="5" width="30" height="30"/> 107 <constraints>
107 <constraints> 108 <constraint firstAttribute="width" constant="30" id="uFf-AY-LsL"/>
108 <constraint firstAttribute="width" constant="30" id="uFf-AY-LsL"/> 109 <constraint firstAttribute="height" constant="30" id="v8w-hV-CY1"/>
109 <constraint firstAttribute="height" constant="30" id="v8w-hV-CY1"/> 110 </constraints>
110 </constraints> 111 <state key="normal" image="icon_right"/>
111 <state key="normal" image="icon_right"/> 112 <connections>
112 <connections> 113 <action selector="clickButton:" destination="-1" eventType="touchUpInside" id="OB1-mE-CGE"/>
113 <action selector="clickButton:" destination="-1" eventType="touchUpInside" id="OB1-mE-CGE"/> 114 </connections>
114 </connections> 115 </button>
115 </button> 116 </subviews>
116 </subviews> 117 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
117 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 118 <constraints>
118 <constraints> 119 <constraint firstAttribute="height" constant="40" id="C5o-Zd-KjG"/>
119 <constraint firstAttribute="height" constant="40" id="C5o-Zd-KjG"/> 120 <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"/> 121 <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"/> 122 <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"/> 123 <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"/> 124 <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"/> 125 <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"/> 126 <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"/> 127 <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"/> 128 </constraints>
128 </constraints> 129 </view>
129 </view> 130 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oUo-Eo-tz5" customClass="CollectionView">
130 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oUo-Eo-tz5" customClass="CollectionView"> 131 <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"/> 132 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
132 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 133 <constraints>
133 <constraints> 134 <constraint firstAttribute="height" constant="40" id="Trr-Ku-Ssy"/>
134 <constraint firstAttribute="height" constant="40" id="Trr-Ku-Ssy"/> 135 </constraints>
135 </constraints> 136 </view>
136 </view> 137 <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"> 138 <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"/> 139 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
139 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 140 <color key="separatorColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
140 <color key="separatorColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 141 <connections>
141 <connections> 142 <outlet property="dataSource" destination="-1" id="JJX-cg-LPL"/>
142 <outlet property="dataSource" destination="-1" id="JJX-cg-LPL"/> 143 <outlet property="delegate" destination="-1" id="u0m-93-lsi"/>
143 <outlet property="delegate" destination="-1" id="u0m-93-lsi"/> 144 </connections>
144 </connections> 145 </tableView>
145 </tableView> 146 </subviews>
146 </subviews> 147 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
147 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 148 <constraints>
148 <constraints> 149 <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"/> 150 <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"/> 151 <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"/> 152 <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"/> 153 <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"/> 154 <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"/> 155 <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"/> 156 <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"/> 157 <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"/> 158 <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"/> 159 <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"/> 160 <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"/> 161 <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"/> 162 <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"/> 163 <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"/> 164 <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"/> 165 <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"/> 166 <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"/> 167 <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"/> 168 </constraints>
168 </constraints> 169 <point key="canvasLocation" x="26.5" y="52.5"/>
169 <point key="canvasLocation" x="26.5" y="52.5"/> 170 </view>
170 </view> 171 </objects>
171 </objects> 172 <resources>
172 <resources> 173 <image name="icon_left" width="30" height="30"/>
173 <image name="icon_left" width="30" height="30"/> 174 <image name="icon_menu" width="30" height="30"/>
174 <image name="icon_menu" width="30" height="30"/> 175 <image name="icon_right" width="30" height="30"/>
175 <image name="icon_right" width="30" height="30"/> 176 <image name="today_back_button" width="73" height="37"/>
176 <image name="today_back_button" width="73" height="37"/> 177 </resources>
177 </resources> 178 </document>
178 </document> 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 - Ranking API 54 #pragma mark - Common API
52 - (void) requestRankingList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate mode:(int) mode page:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 55 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion;
53 56 @end
54 #pragma mark - Common API 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 /* mode_1: Data for mode walking
429 mode_2: Data for mode running
430 mode_3: Data for mode bike */
431 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_3", @"mode_1", @"mode_2", nil];
429 for(NSString * key in arrayKey) { 432 for(NSString * key in arrayKey) {
430 NSDictionary *mode = [arrResult objectForKey:key]; 433 NSDictionary *mode = [arrResult objectForKey:key];
431 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) { 434 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) {
432 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode]; 435 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode];
433 [arrayHistory addObject:objectMode]; 436 [arrayHistory addObject:objectMode];
434 } 437 }
435 else { 438 else {
436 [arrayHistory addObject:[[HistoryObject alloc] init]]; 439 [arrayHistory addObject:[[HistoryObject alloc] init]];
437 } 440 }
438 } 441 }
439 } 442 }
440 completion(arrayHistory, nil); 443 completion(arrayHistory, nil);
441 } 444 }
442 else { 445 else {
443 NSString *message = dataResult[@"message"]; 446 NSString *message = dataResult[@"message"];
444 if (message == nil) { 447 if (message == nil) {
445 message = @"Unknown error"; 448 message = @"Unknown error";
446 } 449 }
447 450
448 if ([message isEqualToString:@"Token is invalid"]) { 451 if ([message isEqualToString:@"Token is invalid"]) {
449 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 452 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
450 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 453 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
451 [self requestHistory:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion]; 454 [self requestHistory:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion];
452 } 455 }
453 else { 456 else {
454 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 457 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
455 completion(nil, errorObject); 458 completion(nil, errorObject);
456 } 459 }
457 } 460 }
458 } 461 }
459 else 462 else
460 { 463 {
461 completion(nil, error); 464 completion(nil, error);
462 } 465 }
463 }]; 466 }];
464 } 467 }
465 468
466 - (void) requestHistoryList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 469 - (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:@""]]; 470 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/detail/%@/%@", [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""]];
468 NSLog(@"requestHistoryList link %@", url); 471 NSLog(@"requestHistoryList link %@", url);
469 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 472 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
470 473
471 if (completion == NULL) { 474 if (completion == NULL) {
472 return ; 475 return ;
473 } 476 }
474 477
475 if (error == nil) 478 if (error == nil)
476 { 479 {
477 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 480 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
478 NSLog(@"%@", dataResult); 481 NSLog(@"%@", dataResult);
479 int status = [dataResult[@"status"] intValue]; 482 int status = [dataResult[@"status"] intValue];
480 if (status == 1) { // status = 1 success 483 if (status == 1) { // status = 1 success
481 if(dataResult[@"result"] != nil) { 484 if(dataResult[@"result"] != nil) {
482 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init]; 485 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init];
483 NSDictionary * arrResult = dataResult[@"result"]; 486 NSDictionary * arrResult = dataResult[@"result"];
484 if(arrResult != nil) { 487 if(arrResult != nil) {
485 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_1", @"mode_2", @"mode_3", nil]; 488 /* mode_1: Data for mode walking
489 mode_2: Data for mode running
490 mode_3: Data for mode bike */
491 NSArray *arrayKey = [NSArray arrayWithObjects:@"mode_3", @"mode_1", @"mode_2", nil];
486 for(NSString * key in arrayKey) { 492 for(NSString * key in arrayKey) {
487 NSDictionary *mode = [arrResult objectForKey:key]; 493 NSDictionary *mode = [arrResult objectForKey:key];
488 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) { 494 if(![[arrResult objectForKey:key] isKindOfClass:[NSNull class]]) {
489 NSMutableArray *array = [[NSMutableArray alloc] init]; 495 NSMutableArray *array = [[NSMutableArray alloc] init];
490 for(NSString *key in mode.allKeys) { 496 for(NSString *key in mode.allKeys) {
491 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode[key]]; 497 HistoryObject * objectMode = [[HistoryObject alloc] initWithData:mode[key]];
492 objectMode.date = [Utilities dateFromString:key withFormat:@"yyyy-MM-dd"]; 498 objectMode.date = [Utilities dateFromString:key withFormat:@"yyyy-MM-dd"];
493 [array addObject:objectMode]; 499 [array addObject:objectMode];
494 } 500 }
495 [arrayHistory addObject:array]; 501 [arrayHistory addObject:array];
496 } 502 }
497 else { 503 else {
498 [arrayHistory addObject:[[NSArray alloc] init]]; 504 [arrayHistory addObject:[[NSArray alloc] init]];
499 } 505 }
500 } 506 }
501 } 507 }
502 completion(arrayHistory, nil); 508 completion(arrayHistory, nil);
503 } 509 }
504 else { 510 else {
505 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 511 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
506 completion(nil, errorObject); 512 completion(nil, errorObject);
507 } 513 }
508 } 514 }
509 else { 515 else {
510 NSString *message = dataResult[@"message"]; 516 NSString *message = dataResult[@"message"];
511 if (message == nil) { 517 if (message == nil) {
512 message = @"Unknown error"; 518 message = @"Unknown error";
513 } 519 }
514 520
515 if ([message isEqualToString:@"Token is invalid"]) { 521 if ([message isEqualToString:@"Token is invalid"]) {
516 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 522 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
517 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 523 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
518 [self requestHistoryList:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion]; 524 [self requestHistoryList:tokenNew startDate:startDate endDate:endDate CompletionHandler:completion];
519 } 525 }
520 else { 526 else {
521 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 527 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
522 completion(nil, errorObject); 528 completion(nil, errorObject);
523 } 529 }
524 } 530 }
525 } 531 }
526 else 532 else
527 { 533 {
528 completion(nil, error); 534 completion(nil, error);
529 } 535 }
530 }]; 536 }];
531 } 537 }
532 538
533 #pragma mark - SNS Screen Function 539 #pragma mark - SNS Screen Function
534 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 540 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
535 NSString *url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?page=%d&record=10", page]; 541 NSString *url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?page=%d&record=10", page];
536 if(groupID > -1) { 542 if(groupID > -1) {
537 url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?group_id=%d&page=%d&record=10", groupID, page]; 543 url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?group_id=%d&page=%d&record=10", groupID, page];
538 } 544 }
539 NSLog(@"requestTweetsList link %@", url); 545 NSLog(@"requestTweetsList link %@", url);
540 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 546 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
541 547
542 if (completion == NULL) { 548 if (completion == NULL) {
543 return ; 549 return ;
544 } 550 }
545 551
546 if (error == nil) 552 if (error == nil)
547 { 553 {
548 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 554 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
549 NSLog(@"%@", dataResult); 555 NSLog(@"%@", dataResult);
550 int status = [dataResult[@"status"] intValue]; 556 int status = [dataResult[@"status"] intValue];
551 if (status == 1) { // status = 1 success 557 if (status == 1) { // status = 1 success
552 if(dataResult[@"result"] != nil) { 558 if(dataResult[@"result"] != nil) {
553 NSArray * array = dataResult[@"result"]; 559 NSArray * array = dataResult[@"result"];
554 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 560 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
555 for(NSDictionary * dict in array) { 561 for(NSDictionary * dict in array) {
556 TweetObject * object = [[TweetObject alloc] initWithData:dict]; 562 TweetObject * object = [[TweetObject alloc] initWithData:dict];
557 [arrayTweets addObject:object]; 563 [arrayTweets addObject:object];
558 } 564 }
559 completion(arrayTweets, nil); 565 completion(arrayTweets, nil);
560 } 566 }
561 else { 567 else {
562 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 568 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
563 completion(nil, errorObject); 569 completion(nil, errorObject);
564 } 570 }
565 } 571 }
566 else { 572 else {
567 NSString *message = dataResult[@"message"]; 573 NSString *message = dataResult[@"message"];
568 if (message == nil) { 574 if (message == nil) {
569 message = @"Unknown error"; 575 message = @"Unknown error";
570 } 576 }
571 577
572 if ([message isEqualToString:@"Token is invalid"]) { 578 if ([message isEqualToString:@"Token is invalid"]) {
573 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 579 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
574 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 580 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
575 [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 581 [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
576 } 582 }
577 else { 583 else {
578 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 584 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
579 completion(nil, errorObject); 585 completion(nil, errorObject);
580 } 586 }
581 } 587 }
582 } 588 }
583 else 589 else
584 { 590 {
585 completion(nil, error); 591 completion(nil, error);
586 } 592 }
587 }]; 593 }];
588 } 594 }
589 595
590 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 596 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
591 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/search"]; 597 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/search"];
592 NSLog(@"searchGroup link %@ page %d", url, page); 598 NSLog(@"searchGroup link %@ page %d", url, page);
593 if(searchTask != nil) { 599 if(searchTask != nil) {
594 [searchTask cancel]; 600 [searchTask cancel];
595 } 601 }
596 602
597 searchTask = [self _request:url method:@"POST" token:token paras:@{@"keyword":key, @"page": [NSNumber numberWithInt:page]} completion:^(NSData *data, NSError *error) { 603 searchTask = [self _request:url method:@"POST" token:token paras:@{@"keyword":key, @"page": [NSNumber numberWithInt:page]} completion:^(NSData *data, NSError *error) {
598 searchTask = nil; 604 searchTask = nil;
599 if (completion == NULL) { 605 if (completion == NULL) {
600 return ; 606 return ;
601 } 607 }
602 608
603 if (error == nil) 609 if (error == nil)
604 { 610 {
605 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 611 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
606 NSLog(@"%@", dataResult); 612 NSLog(@"%@", dataResult);
607 int status = [dataResult[@"status"] intValue]; 613 int status = [dataResult[@"status"] intValue];
608 if (status == 1) { // status = 1 success 614 if (status == 1) { // status = 1 success
609 if(dataResult[@"result"] != nil) { 615 if(dataResult[@"result"] != nil) {
610 NSArray * array = dataResult[@"result"]; 616 NSArray * array = dataResult[@"result"];
611 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 617 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
612 for(NSDictionary * dict in array) { 618 for(NSDictionary * dict in array) {
613 GroupObject * object = [[GroupObject alloc] initWithData:dict]; 619 GroupObject * object = [[GroupObject alloc] initWithData:dict];
614 [arrayTweets addObject:object]; 620 [arrayTweets addObject:object];
615 } 621 }
616 completion(arrayTweets, nil); 622 completion(arrayTweets, nil);
617 } 623 }
618 else { 624 else {
619 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 625 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
620 completion(nil, errorObject); 626 completion(nil, errorObject);
621 } 627 }
622 } 628 }
623 else { 629 else {
624 NSString *message = dataResult[@"message"]; 630 NSString *message = dataResult[@"message"];
625 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 631 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
626 completion(nil, errorObject); 632 completion(nil, errorObject);
627 } 633 }
628 } 634 }
629 else 635 else
630 { 636 {
631 completion(nil, error); 637 completion(nil, error);
632 } 638 }
633 }]; 639 }];
634 } 640 }
635 641
636 #pragma mark - Group Function 642 #pragma mark - Group Function
637 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion { 643 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion {
638 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"]; 644 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"];
639 NSLog(@"requestCreateGroup link %@", url); 645 NSLog(@"requestCreateGroup link %@", url);
640 NSDictionary * dict = @{@"group_name":group.name, 646 NSDictionary * dict = @{@"group_name":group.name,
641 @"goal":group.goal, 647 @"goal":group.goal,
642 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode], 648 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode],
643 @"run_mode_active":[NSNumber numberWithBool:group.runMode], 649 @"run_mode_active":[NSNumber numberWithBool:group.runMode],
644 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode], 650 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode],
645 @"step_mode_active":[NSNumber numberWithBool:group.stepMode], 651 @"step_mode_active":[NSNumber numberWithBool:group.stepMode],
646 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode], 652 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode],
647 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode], 653 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode],
648 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal], 654 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal],
649 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal], 655 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal],
650 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]}; 656 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]};
651 657
652 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 658 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
653 659
654 if (completion == NULL) { 660 if (completion == NULL) {
655 return ; 661 return ;
656 } 662 }
657 663
658 if (error == nil) 664 if (error == nil)
659 { 665 {
660 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 666 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
661 NSLog(@"%@", dataResult); 667 NSLog(@"%@", dataResult);
662 int status = [dataResult[@"status"] intValue]; 668 int status = [dataResult[@"status"] intValue];
663 if (status == 1) { // status = 1 success 669 if (status == 1) { // status = 1 success
664 if(dataResult[@"result"] != nil) { 670 if(dataResult[@"result"] != nil) {
665 NSDictionary * dict = dataResult[@"result"]; 671 NSDictionary * dict = dataResult[@"result"];
666 group.groupID = [dict[@"group_id"] intValue]; 672 group.groupID = [dict[@"group_id"] intValue];
667 completion(group, nil); 673 completion(group, nil);
668 } 674 }
669 else { 675 else {
670 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 676 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
671 completion(nil, errorObject); 677 completion(nil, errorObject);
672 } 678 }
673 } 679 }
674 else { 680 else {
675 NSString *message = dataResult[@"message"]; 681 NSString *message = dataResult[@"message"];
676 if (message == nil) { 682 if (message == nil) {
677 message = @"Unknown error"; 683 message = @"Unknown error";
678 } 684 }
679 685
680 if ([message isEqualToString:@"Token is invalid"]) { 686 if ([message isEqualToString:@"Token is invalid"]) {
681 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 687 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
682 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 688 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
683 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion]; 689 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion];
684 } 690 }
685 else { 691 else {
686 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 692 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
687 completion(nil, errorObject); 693 completion(nil, errorObject);
688 } 694 }
689 } 695 }
690 } 696 }
691 else 697 else
692 { 698 {
693 completion(nil, error); 699 completion(nil, error);
694 } 700 }
695 }]; 701 }];
696 } 702 }
697 703
698 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion { 704 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion {
699 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID]; 705 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID];
700 NSLog(@"getGroupDetail link %@", url); 706 NSLog(@"getGroupDetail link %@", url);
701 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 707 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
702 708
703 if (completion == NULL) { 709 if (completion == NULL) {
704 return ; 710 return ;
705 } 711 }
706 712
707 if (error == nil) 713 if (error == nil)
708 { 714 {
709 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 715 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
710 NSLog(@"%@", dataResult); 716 NSLog(@"%@", dataResult);
711 int status = [dataResult[@"status"] intValue]; 717 int status = [dataResult[@"status"] intValue];
712 if (status == 1) { // status = 1 success 718 if (status == 1) { // status = 1 success
713 if(dataResult[@"result"] != nil) { 719 if(dataResult[@"result"] != nil) {
714 NSArray * array = dataResult[@"result"]; 720 NSArray * array = dataResult[@"result"];
715 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID]; 721 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID];
716 completion(object, nil); 722 completion(object, nil);
717 } 723 }
718 else { 724 else {
719 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 725 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
720 completion(nil, errorObject); 726 completion(nil, errorObject);
721 } 727 }
722 } 728 }
723 else { 729 else {
724 NSString *message = dataResult[@"message"]; 730 NSString *message = dataResult[@"message"];
725 if (message == nil) { 731 if (message == nil) {
726 message = @"Unknown error"; 732 message = @"Unknown error";
727 } 733 }
728 734
729 if ([message isEqualToString:@"Token is invalid"]) { 735 if ([message isEqualToString:@"Token is invalid"]) {
730 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 736 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
731 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 737 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
732 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion]; 738 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion];
733 } 739 }
734 else { 740 else {
735 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 741 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
736 completion(nil, errorObject); 742 completion(nil, errorObject);
737 } 743 }
738 } 744 }
739 } 745 }
740 else 746 else
741 { 747 {
742 completion(nil, error); 748 completion(nil, error);
743 } 749 }
744 }]; 750 }];
745 } 751 }
746 752
747 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 753 - (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]; 754 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/member/%d/%d", groupID, page];
749 NSLog(@"requestMemberList link %@ page %d", url, page); 755 NSLog(@"requestMemberList link %@ page %d", url, page);
750 756
751 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 757 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
752 if (completion == NULL) { 758 if (completion == NULL) {
753 return ; 759 return ;
754 } 760 }
755 761
756 if (error == nil) 762 if (error == nil)
757 { 763 {
758 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 764 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
759 NSLog(@"%@", dataResult); 765 NSLog(@"%@", dataResult);
760 int status = [dataResult[@"status"] intValue]; 766 int status = [dataResult[@"status"] intValue];
761 if (status == 1) { // status = 1 success 767 if (status == 1) { // status = 1 success
762 if(dataResult[@"result"] != nil) { 768 if(dataResult[@"result"] != nil) {
763 NSArray * array = dataResult[@"result"]; 769 NSArray * array = dataResult[@"result"];
764 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 770 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
765 for(NSDictionary * dict in array) { 771 for(NSDictionary * dict in array) {
766 MemberObject * object = [[MemberObject alloc] initWithData:dict]; 772 MemberObject * object = [[MemberObject alloc] initWithData:dict];
767 [arrayTweets addObject:object]; 773 [arrayTweets addObject:object];
768 } 774 }
769 completion(arrayTweets, nil); 775 completion(arrayTweets, nil);
770 } 776 }
771 else { 777 else {
772 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 778 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
773 completion(nil, errorObject); 779 completion(nil, errorObject);
774 } 780 }
775 } 781 }
776 else { 782 else {
777 NSString *message = dataResult[@"message"]; 783 NSString *message = dataResult[@"message"];
778 if (message == nil) { 784 if (message == nil) {
779 message = @"Unknown error"; 785 message = @"Unknown error";
780 } 786 }
781 787
782 if ([message isEqualToString:@"Token is invalid"]) { 788 if ([message isEqualToString:@"Token is invalid"]) {
783 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 789 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
784 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 790 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
785 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 791 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
786 } 792 }
787 else { 793 else {
788 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 794 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
789 completion(nil, errorObject); 795 completion(nil, errorObject);
790 } 796 }
791 } 797 }
792 } 798 }
793 else 799 else
794 { 800 {
795 completion(nil, error); 801 completion(nil, error);
796 } 802 }
797 }]; 803 }];
798 } 804 }
799 805
800 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion { 806 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion {
801 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"]; 807 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"];
802 NSLog(@"requestJoinGroup link %@", url); 808 NSLog(@"requestJoinGroup link %@", url);
803 809
804 [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) { 810 [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) {
805 if (completion == NULL) { 811 if (completion == NULL) {
806 return ; 812 return ;
807 } 813 }
808 814
809 if (error == nil) 815 if (error == nil)
810 { 816 {
811 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 817 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
812 NSLog(@"%@", dataResult); 818 NSLog(@"%@", dataResult);
813 int status = [dataResult[@"status"] intValue]; 819 int status = [dataResult[@"status"] intValue];
814 if (status == 1) { // status = 1 success 820 if (status == 1) { // status = 1 success
815 if(dataResult[@"result"] != nil) { 821 if(dataResult[@"result"] != nil) {
816 completion(nil); 822 completion(nil);
817 } 823 }
818 else { 824 else {
819 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 825 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
820 completion(errorObject); 826 completion(errorObject);
821 } 827 }
822 } 828 }
823 else { 829 else {
824 NSString *message = dataResult[@"message"]; 830 NSString *message = dataResult[@"message"];
825 if ([message isEqualToString:@"Token is invalid"]) { 831 if ([message isEqualToString:@"Token is invalid"]) {
826 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 832 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
827 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 833 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
828 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion]; 834 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion];
829 } 835 }
830 else { 836 else {
831 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 837 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
832 completion(errorObject); 838 completion(errorObject);
833 } 839 }
834 } 840 }
835 } 841 }
836 else 842 else
837 { 843 {
838 completion(error); 844 completion(error);
839 } 845 }
840 }]; 846 }];
841 } 847 }
842 848
843 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 849 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
844 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/list"]; 850 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/list"];
845 NSLog(@"requestGroupList link %@", url); 851 NSLog(@"requestGroupList link %@", url);
846 852
847 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 853 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
848 if (completion == NULL) { 854 if (completion == NULL) {
849 return ; 855 return ;
850 } 856 }
851 857
852 if (error == nil) 858 if (error == nil)
853 { 859 {
854 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 860 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
855 NSLog(@"%@", dataResult); 861 NSLog(@"%@", dataResult);
856 int status = [dataResult[@"status"] intValue]; 862 int status = [dataResult[@"status"] intValue];
857 if (status == 1) { // status = 1 success 863 if (status == 1) { // status = 1 success
858 if(dataResult[@"result"] != nil) { 864 if(dataResult[@"result"] != nil) {
859 NSArray * array = dataResult[@"result"]; 865 NSArray * array = dataResult[@"result"];
860 NSMutableArray * arrayGroup = [[NSMutableArray alloc] init]; 866 NSMutableArray * arrayGroup = [[NSMutableArray alloc] init];
861 for(NSDictionary * dict in array) { 867 for(NSDictionary * dict in array) {
862 GroupObject * object = [[GroupObject alloc] initWithShortData:dict]; 868 GroupObject * object = [[GroupObject alloc] initWithShortData:dict];
863 [arrayGroup addObject:object]; 869 [arrayGroup addObject:object];
864 } 870 }
865 completion(arrayGroup, nil); 871 completion(arrayGroup, nil);
866 } 872 }
867 else { 873 else {
868 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 874 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
869 completion(nil, errorObject); 875 completion(nil, errorObject);
870 } 876 }
871 } 877 }
872 else { 878 else {
873 NSString *message = dataResult[@"message"]; 879 NSString *message = dataResult[@"message"];
874 if (message == nil) { 880 if (message == nil) {
875 message = @"Unknown error"; 881 message = @"Unknown error";
876 } 882 }
877 883
878 if ([message isEqualToString:@"Token is invalid"]) { 884 if ([message isEqualToString:@"Token is invalid"]) {
879 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 885 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
880 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 886 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
881 [self requestGroupList:tokenNew CompletionHandler:completion]; 887 [self requestGroupList:tokenNew CompletionHandler:completion];
882 } 888 }
883 else { 889 else {
884 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 890 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
885 completion(nil, errorObject); 891 completion(nil, errorObject);
886 } 892 }
887 } 893 }
888 } 894 }
889 else 895 else
890 { 896 {
891 completion(nil, error); 897 completion(nil, error);
892 } 898 }
893 }]; 899 }];
894 } 900 }
901
902 #pragma mark - Ranking API
903 - (void) requestRankingList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate mode:(int) mode page:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
904 NSString *url = [kServerAddress stringByAppendingFormat:@"api/ranking/%d/%@/%@/%d", mode, [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""], page];
905 NSLog(@"requestRaningList link %@", url);
906 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
907
908 if (completion == NULL) {
909 return ;
910 }
911
912 if (error == nil)
913 {
914 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
915 NSLog(@"%@", dataResult);
916 int status = [dataResult[@"status"] intValue];
917 if (status == 1) { // status = 1 success
918 NSArray * array = dataResult[@"result"];
919 NSMutableArray * arrayRanking = [[NSMutableArray alloc] init];
920 for(NSDictionary * dict in array) {
921 RankingObject * object = [[RankingObject alloc] initWithData:dict];
922 [arrayRanking addObject:object];
923 }
924 completion(arrayRanking, nil);
925 }
926 else {
927 NSString *message = dataResult[@"message"];
928 if (message == nil) {
929 message = @"Unknown error";
930 }
931
932 if ([message isEqualToString:@"Token is invalid"]) {
933 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
934 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
935 [self requestRankingList:tokenNew startDate:startDate endDate:endDate mode:mode page:page CompletionHandler:completion];
936 }
937 else {
938 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
939 completion(nil, errorObject);
940 }
941 }
942 }
943 else
944 {
945 completion(nil, error);
946 }
947 }];
948 }
949
895 950 #pragma mark - Common API
896 #pragma mark - Ranking API 951 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion {
897 - (void) requestRankingList:(NSString *)token startDate:(NSDate *)startDate endDate:(NSDate *)endDate mode:(int) mode page:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 952 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) {
898 NSString *url = [kServerAddress stringByAppendingFormat:@"api/ranking/%d/%@/%@/%d", mode, [Utilities stringFromDate:startDate withFormat:@"YYYYMMdd" locale:@""], [Utilities stringFromDate:endDate withFormat:@"YYYYMMdd" locale:@""], page]; 953
899 NSLog(@"requestRaningList link %@", url); 954 if (completion == NULL) {
900 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 955 return ;
901 956 }
902 if (completion == NULL) { 957
903 return ; 958 if (error == nil)
904 } 959 {
905 960 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
906 if (error == nil) 961
907 { 962 int status = [dataResult[@"status"] intValue];
908 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 963 if (status == 1) { // status = 1 success
909 NSLog(@"%@", dataResult); 964 NSArray *arrayResult = dataResult[@"result"];
910 int status = [dataResult[@"status"] intValue]; 965 if (arrayResult.count > 0) {
911 if (status == 1) { // status = 1 success 966 NSString *token = arrayResult[0];
912 NSArray * array = dataResult[@"result"]; 967 completion(token, nil);
913 NSMutableArray * arrayRanking = [[NSMutableArray alloc] init]; 968 }
914 for(NSDictionary * dict in array) { 969 else {
915 RankingObject * object = [[RankingObject alloc] initWithData:dict]; 970 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
916 [arrayRanking addObject:object]; 971 completion(nil, errorObject);
917 } 972 }
918 completion(arrayRanking, nil); 973
919 } 974 }
920 else { 975 else { // status = 0 error
921 NSString *message = dataResult[@"message"]; 976 NSString *message = dataResult[@"message"];
922 if (message == nil) { 977 if (message == nil) {
923 message = @"Unknown error"; 978 message = @"Unknown error";
924 } 979 }
925 980 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
926 if ([message isEqualToString:@"Token is invalid"]) { 981 completion(nil, loginFaild);
927 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 982 }
928 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 983 }
929 [self requestRankingList:tokenNew startDate:startDate endDate:endDate mode:mode page:page CompletionHandler:completion]; 984 else
930 } 985 {
931 else { 986 completion(nil, error);
932 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 987 }
933 completion(nil, errorObject); 988 }];
934 } 989 }
935 } 990
936 } 991 #pragma mark - Private Function
937 else 992 - (void) checkToken {
938 { 993 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil];
939 completion(nil, error); 994 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser];
940 } 995 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data];
941 }]; 996 if (user != nil) {
942 } 997 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) {
943 998 if (error == nil) {
944 #pragma mark - Common API 999 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken];
945 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion { 1000 [[NSUserDefaults standardUserDefaults] synchronize];
946 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) { 1001 }
947 1002 }];
948 if (completion == NULL) { 1003 }
949 return ; 1004 }
950 } 1005 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary
951 1006 {
952 if (error == nil) 1007 NSMutableArray *parts = [[NSMutableArray alloc] init];
953 { 1008 for (id key in dictionary)
954 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 1009 {
955 1010 NSString *encodedValue = [[dictionary[key] description] urlencode];
956 int status = [dataResult[@"status"] intValue]; 1011 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
957 if (status == 1) { // status = 1 success 1012 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue];
958 NSArray *arrayResult = dataResult[@"result"]; 1013 [parts addObject:part];
959 if (arrayResult.count > 0) { 1014 }
960 NSString *token = arrayResult[0]; 1015 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"];
961 completion(token, nil); 1016 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding];
962 } 1017 }
963 else { 1018
964 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 1019 - (NSURLSessionDataTask *) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion
965 completion(nil, errorObject); 1020 {
966 } 1021 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]];
967 1022 request.HTTPMethod = method;
968 } 1023 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"];
969 else { // status = 0 error 1024 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"];
970 NSString *message = dataResult[@"message"]; 1025 if(token != nil && ![token isEqual: @""]) {
971 if (message == nil) { 1026 [request setValue: token forHTTPHeaderField: @"token"];
972 message = @"Unknown error"; 1027 }
973 } 1028 [request setTimeoutInterval:self.timeOutInterval];
974 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 1029
975 completion(nil, loginFaild); 1030 if (paras != nil)
976 } 1031 {
977 } 1032 NSData *encodedData = [self _encodeDictionary: paras];
978 else 1033 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"];
979 { 1034 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"];
980 completion(nil, error); 1035 [request setHTTPBody: encodedData];
981 } 1036 }
982 }]; 1037
983 } 1038 NSURLSession *session = [NSURLSession sharedSession];
984 1039 NSURLSessionDataTask *task = [session dataTaskWithRequest:request
985 #pragma mark - Private Function 1040 completionHandler:
986 - (void) checkToken { 1041 ^(NSData *data, NSURLResponse *response, NSError *error) {
987 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil]; 1042 if (completion == NULL) {
988 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser]; 1043 return ;
989 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data]; 1044 }
990 if (user != nil) { 1045 if (error == nil)
991 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) { 1046 {
992 if (error == nil) { 1047 completion(data, nil);
993 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken]; 1048 }
994 [[NSUserDefaults standardUserDefaults] synchronize]; 1049 else
995 } 1050 {
996 }]; 1051 completion(nil, error);
997 } 1052 }
998 } 1053 }];
999 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary 1054 [task resume];
1000 { 1055 return task;
1001 NSMutableArray *parts = [[NSMutableArray alloc] init]; 1056 }
1002 for (id key in dictionary) 1057
1003 { 1058 -(void)waitUntilDone:(void(^)(void))waitBlock {
1004 NSString *encodedValue = [[dictionary[key] description] urlencode]; 1059 //use your statement or call method here
1005 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; 1060 if(waitBlock){
1006 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue]; 1061 waitBlock();
1007 [parts addObject:part]; 1062 }
1008 } 1063 }
1009 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"]; 1064
1010 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding]; 1065 @end
1011 } 1066