Commit fcfef587834b053465a872d4fbf1a6dcc7f93244

Authored by nvtu11790@gmail.com
1 parent 03a8708ee3

Add my group screen, add API get group list and update member list or tweet list when change group

Showing 12 changed files with 633 additions and 5 deletions Inline Diff

LifeLog/LifeLog.xcodeproj/project.pbxproj
1 // !$*UTF8*$! 1 // !$*UTF8*$!
2 { 2 {
3 archiveVersion = 1; 3 archiveVersion = 1;
4 classes = { 4 classes = {
5 }; 5 };
6 objectVersion = 46; 6 objectVersion = 46;
7 objects = { 7 objects = {
8 8
9 /* Begin PBXBuildFile section */ 9 /* Begin PBXBuildFile section */
10 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */; }; 10 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */; };
11 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED11F2E39DB0029891F /* LoginViewController.m */; }; 11 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED11F2E39DB0029891F /* LoginViewController.m */; };
12 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E18CED21F2E39DB0029891F /* LoginViewController.xib */; }; 12 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E18CED21F2E39DB0029891F /* LoginViewController.xib */; };
13 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED71F2E3C840029891F /* ServerAPI.m */; }; 13 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED71F2E3C840029891F /* ServerAPI.m */; };
14 6E18CEDC1F2E40F50029891F /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CEDB1F2E40F50029891F /* User.m */; }; 14 6E18CEDC1F2E40F50029891F /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CEDB1F2E40F50029891F /* User.m */; };
15 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */; }; 15 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */; };
16 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */; }; 16 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */; };
17 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */; }; 17 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */; };
18 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */; }; 18 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */; };
19 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */; }; 19 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */; };
20 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; }; 20 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; };
21 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; }; 21 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; };
22 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; }; 22 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; };
23 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; }; 23 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */; };
24 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; }; 24 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E38E1F27A703001EB88E /* LifeLogTests.m */; };
25 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; }; 25 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3991F27A703001EB88E /* LifeLogUITests.m */; };
26 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; }; 26 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3AE1F27A975001EB88E /* HomeViewController.m */; };
27 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; }; 27 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */; };
28 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; }; 28 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */; };
29 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; }; 29 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */; };
30 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */; }; 30 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */; };
31 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */; }; 31 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */; };
32 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */; }; 32 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */; };
33 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */; }; 33 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */; };
34 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3C31F27ACAE001EB88E /* MapViewController.m */; }; 34 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3C31F27ACAE001EB88E /* MapViewController.m */; };
35 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */; }; 35 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */; };
36 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */; }; 36 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */; };
37 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */; }; 37 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */; };
38 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */; }; 38 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */; };
39 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */; }; 39 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */; };
40 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF301F40BB7A00F52CFE /* TopObject.m */; }; 40 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EA4AF301F40BB7A00F52CFE /* TopObject.m */; };
41 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */; }; 41 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */; };
42 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; }; 42 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BED1F2C2FB800765ACC /* Utilities.m */; };
43 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; }; 43 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */; };
44 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; }; 44 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6EF163091F29069300DA306C /* Localizable.strings */; };
45 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */; }; 45 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */; };
46 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */; }; 46 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */; };
47 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; }; 47 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */; };
48 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; }; 48 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */; };
49 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; }; 49 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */; };
50 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */; }; 50 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */; };
51 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */; }; 51 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */; };
52 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */; }; 52 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */; };
53 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */; }; 53 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */; };
54 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6731F3E0E4E002926F5 /* GroupObject.m */; }; 54 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6731F3E0E4E002926F5 /* GroupObject.m */; };
55 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6771F40513C002926F5 /* GroupDetailViewController.m */; }; 55 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933E6771F40513C002926F5 /* GroupDetailViewController.m */; };
56 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E6781F40513C002926F5 /* GroupDetailViewController.xib */; }; 56 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E933E6781F40513C002926F5 /* GroupDetailViewController.xib */; };
57 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E461F3596940059355A /* AutoTransLabel.m */; }; 57 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E461F3596940059355A /* AutoTransLabel.m */; };
58 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E491F35AA180059355A /* HistoryObject.m */; }; 58 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E491F35AA180059355A /* HistoryObject.m */; };
59 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E4C1F361A230059355A /* HistoryGraphObject.m */; }; 59 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9373E4C1F361A230059355A /* HistoryGraphObject.m */; };
60 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9497FD41F46EC1100E6AF8D /* MemberObject.m */; }; 60 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9497FD41F46EC1100E6AF8D /* MemberObject.m */; };
61 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */; }; 61 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */; };
62 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */; }; 62 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */; };
63 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */; };
64 E95F4CF41F48B39200D27E80 /* MyGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */; };
63 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */; }; 65 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */; };
64 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */; }; 66 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */; };
65 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E96855091F3C444900317CEF /* AutoTransButton.m */; }; 67 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E96855091F3C444900317CEF /* AutoTransButton.m */; };
66 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */; }; 68 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */; };
67 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */; }; 69 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */; };
68 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E997E0251F3AB66500709FB1 /* Social.framework */; }; 70 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E997E0251F3AB66500709FB1 /* Social.framework */; };
69 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AA1F336F3600C78787 /* CollectionView.m */; }; 71 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AA1F336F3600C78787 /* CollectionView.m */; };
70 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13AC1F336F4500C78787 /* CollectionView.xib */; }; 72 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13AC1F336F4500C78787 /* CollectionView.xib */; };
71 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */; }; 73 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */; };
72 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */; }; 74 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */; };
73 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909201F3D559D004CF99F /* TweetObject.m */; }; 75 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909201F3D559D004CF99F /* TweetObject.m */; };
74 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */; }; 76 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */; };
75 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */; }; 77 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */; };
76 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */; }; 78 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */; };
77 /* End PBXBuildFile section */ 79 /* End PBXBuildFile section */
78 80
79 /* Begin PBXContainerItemProxy section */ 81 /* Begin PBXContainerItemProxy section */
80 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = { 82 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = {
81 isa = PBXContainerItemProxy; 83 isa = PBXContainerItemProxy;
82 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 84 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
83 proxyType = 1; 85 proxyType = 1;
84 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 86 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
85 remoteInfo = LifeLog; 87 remoteInfo = LifeLog;
86 }; 88 };
87 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = { 89 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = {
88 isa = PBXContainerItemProxy; 90 isa = PBXContainerItemProxy;
89 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 91 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
90 proxyType = 1; 92 proxyType = 1;
91 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 93 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
92 remoteInfo = LifeLog; 94 remoteInfo = LifeLog;
93 }; 95 };
94 /* End PBXContainerItemProxy section */ 96 /* End PBXContainerItemProxy section */
95 97
96 /* Begin PBXFileReference section */ 98 /* Begin PBXFileReference section */
97 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>"; };
98 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; };
99 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>"; };
100 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>"; };
101 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>"; };
102 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>"; };
103 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>"; };
104 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>"; };
105 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>"; };
106 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>"; };
107 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>"; };
108 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>"; };
109 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>"; };
110 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>"; };
111 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>"; };
112 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>"; };
113 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>"; };
114 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>"; };
115 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>"; };
116 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>"; };
117 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>"; };
118 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; };
119 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>"; };
120 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>"; };
121 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>"; };
122 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>"; };
123 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>"; };
124 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>"; };
125 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; };
126 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>"; };
127 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>"; };
128 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; };
129 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>"; };
130 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>"; };
131 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>"; };
132 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>"; };
133 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>"; };
134 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>"; };
135 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>"; };
136 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>"; };
137 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>"; };
138 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>"; };
139 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>"; };
140 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>"; };
141 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>"; };
142 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>"; };
143 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>"; };
144 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>"; };
145 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>"; };
146 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>"; };
147 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>"; };
148 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>"; };
149 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>"; };
150 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>"; };
151 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>"; };
152 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>"; };
153 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>"; };
154 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>"; };
155 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>"; };
156 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>"; };
157 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>"; };
158 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>"; };
159 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>"; };
160 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>"; };
161 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>"; };
162 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>"; };
163 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>"; };
164 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>"; };
165 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>"; };
166 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>"; };
167 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>"; };
168 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>"; };
169 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>"; };
170 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>"; };
171 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>"; };
172 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>"; };
173 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>"; };
174 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>"; };
175 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>"; };
176 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>"; };
177 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>"; };
178 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>"; };
179 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>"; };
180 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>"; };
181 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>"; };
182 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>"; };
183 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>"; };
184 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>"; };
185 E9373E4B1F361A230059355A /* HistoryGraphObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryGraphObject.h; sourceTree = "<group>"; }; 187 E9373E4B1F361A230059355A /* HistoryGraphObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryGraphObject.h; sourceTree = "<group>"; };
186 E9373E4C1F361A230059355A /* HistoryGraphObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryGraphObject.m; sourceTree = "<group>"; }; 188 E9373E4C1F361A230059355A /* HistoryGraphObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryGraphObject.m; sourceTree = "<group>"; };
187 E9497FD31F46EC1100E6AF8D /* MemberObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberObject.h; sourceTree = "<group>"; }; 189 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>"; }; 190 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>"; }; 191 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateGroupViewController.h; sourceTree = "<group>"; };
190 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateGroupViewController.m; sourceTree = "<group>"; }; 192 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateGroupViewController.m; sourceTree = "<group>"; };
191 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CreateGroupViewController.xib; sourceTree = "<group>"; }; 193 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CreateGroupViewController.xib; sourceTree = "<group>"; };
194 E95F4CF01F48B39200D27E80 /* MyGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyGroupViewController.h; sourceTree = "<group>"; };
195 E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyGroupViewController.m; sourceTree = "<group>"; };
196 E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MyGroupViewController.xib; sourceTree = "<group>"; };
192 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingTableViewCell.h; sourceTree = "<group>"; }; 197 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingTableViewCell.h; sourceTree = "<group>"; };
193 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingTableViewCell.m; sourceTree = "<group>"; }; 198 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingTableViewCell.m; sourceTree = "<group>"; };
194 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingTableViewCell.xib; sourceTree = "<group>"; }; 199 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingTableViewCell.xib; sourceTree = "<group>"; };
195 E96855081F3C444900317CEF /* AutoTransButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransButton.h; sourceTree = "<group>"; }; 200 E96855081F3C444900317CEF /* AutoTransButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransButton.h; sourceTree = "<group>"; };
196 E96855091F3C444900317CEF /* AutoTransButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransButton.m; sourceTree = "<group>"; }; 201 E96855091F3C444900317CEF /* AutoTransButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransButton.m; sourceTree = "<group>"; };
197 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSRecentTopicTableViewCell.h; sourceTree = "<group>"; }; 202 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSRecentTopicTableViewCell.h; sourceTree = "<group>"; };
198 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSRecentTopicTableViewCell.m; sourceTree = "<group>"; }; 203 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSRecentTopicTableViewCell.m; sourceTree = "<group>"; };
199 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSRecentTopicTableViewCell.xib; sourceTree = "<group>"; }; 204 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSRecentTopicTableViewCell.xib; sourceTree = "<group>"; };
200 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; };
201 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>"; };
202 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>"; };
203 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>"; };
204 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>"; };
205 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>"; };
206 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>"; };
207 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>"; };
208 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>"; };
209 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>"; };
210 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>"; };
211 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>"; };
212 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>"; };
213 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>"; };
214 /* End PBXFileReference section */ 219 /* End PBXFileReference section */
215 220
216 /* Begin PBXFrameworksBuildPhase section */ 221 /* Begin PBXFrameworksBuildPhase section */
217 6E84E36E1F27A700001EB88E /* Frameworks */ = { 222 6E84E36E1F27A700001EB88E /* Frameworks */ = {
218 isa = PBXFrameworksBuildPhase; 223 isa = PBXFrameworksBuildPhase;
219 buildActionMask = 2147483647; 224 buildActionMask = 2147483647;
220 files = ( 225 files = (
221 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */, 226 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */,
222 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */, 227 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */,
223 ); 228 );
224 runOnlyForDeploymentPostprocessing = 0; 229 runOnlyForDeploymentPostprocessing = 0;
225 }; 230 };
226 6E84E3871F27A703001EB88E /* Frameworks */ = { 231 6E84E3871F27A703001EB88E /* Frameworks */ = {
227 isa = PBXFrameworksBuildPhase; 232 isa = PBXFrameworksBuildPhase;
228 buildActionMask = 2147483647; 233 buildActionMask = 2147483647;
229 files = ( 234 files = (
230 ); 235 );
231 runOnlyForDeploymentPostprocessing = 0; 236 runOnlyForDeploymentPostprocessing = 0;
232 }; 237 };
233 6E84E3921F27A703001EB88E /* Frameworks */ = { 238 6E84E3921F27A703001EB88E /* Frameworks */ = {
234 isa = PBXFrameworksBuildPhase; 239 isa = PBXFrameworksBuildPhase;
235 buildActionMask = 2147483647; 240 buildActionMask = 2147483647;
236 files = ( 241 files = (
237 ); 242 );
238 runOnlyForDeploymentPostprocessing = 0; 243 runOnlyForDeploymentPostprocessing = 0;
239 }; 244 };
240 /* End PBXFrameworksBuildPhase section */ 245 /* End PBXFrameworksBuildPhase section */
241 246
242 /* Begin PBXGroup section */ 247 /* Begin PBXGroup section */
243 020C1721B642EF36F31E1BB4 /* Frameworks */ = { 248 020C1721B642EF36F31E1BB4 /* Frameworks */ = {
244 isa = PBXGroup; 249 isa = PBXGroup;
245 children = ( 250 children = (
246 E997E0251F3AB66500709FB1 /* Social.framework */, 251 E997E0251F3AB66500709FB1 /* Social.framework */,
247 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */, 252 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */,
248 ); 253 );
249 name = Frameworks; 254 name = Frameworks;
250 sourceTree = "<group>"; 255 sourceTree = "<group>";
251 }; 256 };
252 6E18CECF1F2E398C0029891F /* Login */ = { 257 6E18CECF1F2E398C0029891F /* Login */ = {
253 isa = PBXGroup; 258 isa = PBXGroup;
254 children = ( 259 children = (
255 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */, 260 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */,
256 6E18CED01F2E39DB0029891F /* LoginViewController.h */, 261 6E18CED01F2E39DB0029891F /* LoginViewController.h */,
257 6E18CED11F2E39DB0029891F /* LoginViewController.m */, 262 6E18CED11F2E39DB0029891F /* LoginViewController.m */,
258 6E18CED21F2E39DB0029891F /* LoginViewController.xib */, 263 6E18CED21F2E39DB0029891F /* LoginViewController.xib */,
259 ); 264 );
260 name = Login; 265 name = Login;
261 sourceTree = "<group>"; 266 sourceTree = "<group>";
262 }; 267 };
263 6E18CED51F2E3C0E0029891F /* ServerAPI */ = { 268 6E18CED51F2E3C0E0029891F /* ServerAPI */ = {
264 isa = PBXGroup; 269 isa = PBXGroup;
265 children = ( 270 children = (
266 6E18CED61F2E3C840029891F /* ServerAPI.h */, 271 6E18CED61F2E3C840029891F /* ServerAPI.h */,
267 6E18CED71F2E3C840029891F /* ServerAPI.m */, 272 6E18CED71F2E3C840029891F /* ServerAPI.m */,
268 ); 273 );
269 name = ServerAPI; 274 name = ServerAPI;
270 sourceTree = "<group>"; 275 sourceTree = "<group>";
271 }; 276 };
272 6E18CED91F2E40AE0029891F /* Model */ = { 277 6E18CED91F2E40AE0029891F /* Model */ = {
273 isa = PBXGroup; 278 isa = PBXGroup;
274 children = ( 279 children = (
275 6E18CEDD1F2E46570029891F /* Entities.h */, 280 6E18CEDD1F2E46570029891F /* Entities.h */,
276 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */, 281 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */,
277 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */, 282 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */,
278 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */, 283 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */,
279 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */, 284 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */,
280 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */, 285 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */,
281 6EA4AF301F40BB7A00F52CFE /* TopObject.m */, 286 6EA4AF301F40BB7A00F52CFE /* TopObject.m */,
282 6E18CEDA1F2E40F50029891F /* User.h */, 287 6E18CEDA1F2E40F50029891F /* User.h */,
283 6E18CEDB1F2E40F50029891F /* User.m */, 288 6E18CEDB1F2E40F50029891F /* User.m */,
284 E9373E481F35AA180059355A /* HistoryObject.h */, 289 E9373E481F35AA180059355A /* HistoryObject.h */,
285 E9373E491F35AA180059355A /* HistoryObject.m */, 290 E9373E491F35AA180059355A /* HistoryObject.m */,
286 E9373E4B1F361A230059355A /* HistoryGraphObject.h */, 291 E9373E4B1F361A230059355A /* HistoryGraphObject.h */,
287 E9373E4C1F361A230059355A /* HistoryGraphObject.m */, 292 E9373E4C1F361A230059355A /* HistoryGraphObject.m */,
288 E9D9091F1F3D559D004CF99F /* TweetObject.h */, 293 E9D9091F1F3D559D004CF99F /* TweetObject.h */,
289 E9D909201F3D559D004CF99F /* TweetObject.m */, 294 E9D909201F3D559D004CF99F /* TweetObject.m */,
290 E933E6721F3E0E4E002926F5 /* GroupObject.h */, 295 E933E6721F3E0E4E002926F5 /* GroupObject.h */,
291 E933E6731F3E0E4E002926F5 /* GroupObject.m */, 296 E933E6731F3E0E4E002926F5 /* GroupObject.m */,
292 E9497FD31F46EC1100E6AF8D /* MemberObject.h */, 297 E9497FD31F46EC1100E6AF8D /* MemberObject.h */,
293 E9497FD41F46EC1100E6AF8D /* MemberObject.m */, 298 E9497FD41F46EC1100E6AF8D /* MemberObject.m */,
294 ); 299 );
295 name = Model; 300 name = Model;
296 sourceTree = "<group>"; 301 sourceTree = "<group>";
297 }; 302 };
298 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = { 303 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = {
299 isa = PBXGroup; 304 isa = PBXGroup;
300 children = ( 305 children = (
301 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */, 306 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */,
302 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */, 307 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */,
303 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */, 308 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */,
304 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */, 309 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */,
305 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */, 310 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */,
306 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */, 311 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */,
307 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */, 312 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */,
308 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */, 313 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */,
309 ); 314 );
310 name = TPKeyboardAvoiding; 315 name = TPKeyboardAvoiding;
311 sourceTree = "<group>"; 316 sourceTree = "<group>";
312 }; 317 };
313 6E84E3681F27A700001EB88E = { 318 6E84E3681F27A700001EB88E = {
314 isa = PBXGroup; 319 isa = PBXGroup;
315 children = ( 320 children = (
316 6E84E3731F27A700001EB88E /* LifeLog */, 321 6E84E3731F27A700001EB88E /* LifeLog */,
317 6E84E38D1F27A703001EB88E /* LifeLogTests */, 322 6E84E38D1F27A703001EB88E /* LifeLogTests */,
318 6E84E3981F27A703001EB88E /* LifeLogUITests */, 323 6E84E3981F27A703001EB88E /* LifeLogUITests */,
319 DE8269E957EA47CD771BAB33 /* Pods */, 324 DE8269E957EA47CD771BAB33 /* Pods */,
320 020C1721B642EF36F31E1BB4 /* Frameworks */, 325 020C1721B642EF36F31E1BB4 /* Frameworks */,
321 783929CF869F5081762B3DCA /* Products */, 326 783929CF869F5081762B3DCA /* Products */,
322 ); 327 );
323 sourceTree = "<group>"; 328 sourceTree = "<group>";
324 }; 329 };
325 6E84E3721F27A700001EB88E /* Products */ = { 330 6E84E3721F27A700001EB88E /* Products */ = {
326 isa = PBXGroup; 331 isa = PBXGroup;
327 children = ( 332 children = (
328 6E84E3711F27A700001EB88E /* LifeLog.app */, 333 6E84E3711F27A700001EB88E /* LifeLog.app */,
329 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */, 334 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */,
330 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */, 335 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */,
331 ); 336 );
332 name = Products; 337 name = Products;
333 sourceTree = "<group>"; 338 sourceTree = "<group>";
334 }; 339 };
335 6E84E3731F27A700001EB88E /* LifeLog */ = { 340 6E84E3731F27A700001EB88E /* LifeLog */ = {
336 isa = PBXGroup; 341 isa = PBXGroup;
337 children = ( 342 children = (
338 6E18CED91F2E40AE0029891F /* Model */, 343 6E18CED91F2E40AE0029891F /* Model */,
339 6E18CED51F2E3C0E0029891F /* ServerAPI */, 344 6E18CED51F2E3C0E0029891F /* ServerAPI */,
340 6EDC8BEB1F2C2F3300765ACC /* Common */, 345 6EDC8BEB1F2C2F3300765ACC /* Common */,
341 6ECC406D1F2A5FA500AAEB97 /* Library */, 346 6ECC406D1F2A5FA500AAEB97 /* Library */,
342 E99E13A71F336F0C00C78787 /* CustomView */, 347 E99E13A71F336F0C00C78787 /* CustomView */,
343 6E84E3A81F27A8A9001EB88E /* ViewControllers */, 348 6E84E3A81F27A8A9001EB88E /* ViewControllers */,
344 6E84E3A71F27A887001EB88E /* AppDelegate */, 349 6E84E3A71F27A887001EB88E /* AppDelegate */,
345 6E84E3801F27A701001EB88E /* Assets.xcassets */, 350 6E84E3801F27A701001EB88E /* Assets.xcassets */,
346 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */, 351 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */,
347 6E84E3851F27A701001EB88E /* Info.plist */, 352 6E84E3851F27A701001EB88E /* Info.plist */,
348 6E84E3741F27A701001EB88E /* Supporting Files */, 353 6E84E3741F27A701001EB88E /* Supporting Files */,
349 ); 354 );
350 path = LifeLog; 355 path = LifeLog;
351 sourceTree = "<group>"; 356 sourceTree = "<group>";
352 }; 357 };
353 6E84E3741F27A701001EB88E /* Supporting Files */ = { 358 6E84E3741F27A701001EB88E /* Supporting Files */ = {
354 isa = PBXGroup; 359 isa = PBXGroup;
355 children = ( 360 children = (
356 6E84E3751F27A701001EB88E /* main.m */, 361 6E84E3751F27A701001EB88E /* main.m */,
357 6EF163091F29069300DA306C /* Localizable.strings */, 362 6EF163091F29069300DA306C /* Localizable.strings */,
358 ); 363 );
359 name = "Supporting Files"; 364 name = "Supporting Files";
360 sourceTree = "<group>"; 365 sourceTree = "<group>";
361 }; 366 };
362 6E84E38D1F27A703001EB88E /* LifeLogTests */ = { 367 6E84E38D1F27A703001EB88E /* LifeLogTests */ = {
363 isa = PBXGroup; 368 isa = PBXGroup;
364 children = ( 369 children = (
365 6E84E38E1F27A703001EB88E /* LifeLogTests.m */, 370 6E84E38E1F27A703001EB88E /* LifeLogTests.m */,
366 6E84E3901F27A703001EB88E /* Info.plist */, 371 6E84E3901F27A703001EB88E /* Info.plist */,
367 ); 372 );
368 path = LifeLogTests; 373 path = LifeLogTests;
369 sourceTree = "<group>"; 374 sourceTree = "<group>";
370 }; 375 };
371 6E84E3981F27A703001EB88E /* LifeLogUITests */ = { 376 6E84E3981F27A703001EB88E /* LifeLogUITests */ = {
372 isa = PBXGroup; 377 isa = PBXGroup;
373 children = ( 378 children = (
374 6E84E3991F27A703001EB88E /* LifeLogUITests.m */, 379 6E84E3991F27A703001EB88E /* LifeLogUITests.m */,
375 6E84E39B1F27A703001EB88E /* Info.plist */, 380 6E84E39B1F27A703001EB88E /* Info.plist */,
376 ); 381 );
377 path = LifeLogUITests; 382 path = LifeLogUITests;
378 sourceTree = "<group>"; 383 sourceTree = "<group>";
379 }; 384 };
380 6E84E3A71F27A887001EB88E /* AppDelegate */ = { 385 6E84E3A71F27A887001EB88E /* AppDelegate */ = {
381 isa = PBXGroup; 386 isa = PBXGroup;
382 children = ( 387 children = (
383 6E84E3771F27A701001EB88E /* AppDelegate.h */, 388 6E84E3771F27A701001EB88E /* AppDelegate.h */,
384 6E84E3781F27A701001EB88E /* AppDelegate.m */, 389 6E84E3781F27A701001EB88E /* AppDelegate.m */,
385 ); 390 );
386 name = AppDelegate; 391 name = AppDelegate;
387 sourceTree = "<group>"; 392 sourceTree = "<group>";
388 }; 393 };
389 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = { 394 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = {
390 isa = PBXGroup; 395 isa = PBXGroup;
391 children = ( 396 children = (
392 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */, 397 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */,
393 9CBDA0FB1F2F03490055DED1 /* Register */, 398 9CBDA0FB1F2F03490055DED1 /* Register */,
394 6E18CECF1F2E398C0029891F /* Login */, 399 6E18CECF1F2E398C0029891F /* Login */,
395 6E84E3AC1F27A954001EB88E /* SNS */, 400 6E84E3AC1F27A954001EB88E /* SNS */,
396 6E84E3C11F27AC89001EB88E /* Map */, 401 6E84E3C11F27AC89001EB88E /* Map */,
397 6E84E3AB1F27A946001EB88E /* Ranking */, 402 6E84E3AB1F27A946001EB88E /* Ranking */,
398 6E84E3AA1F27A924001EB88E /* History */, 403 6E84E3AA1F27A924001EB88E /* History */,
399 6E84E3A91F27A915001EB88E /* Home */, 404 6E84E3A91F27A915001EB88E /* Home */,
400 ); 405 );
401 name = ViewControllers; 406 name = ViewControllers;
402 sourceTree = "<group>"; 407 sourceTree = "<group>";
403 }; 408 };
404 6E84E3A91F27A915001EB88E /* Home */ = { 409 6E84E3A91F27A915001EB88E /* Home */ = {
405 isa = PBXGroup; 410 isa = PBXGroup;
406 children = ( 411 children = (
407 6E8DA0F31F2BAC0800CCE941 /* Today */, 412 6E8DA0F31F2BAC0800CCE941 /* Today */,
408 6E84E3AD1F27A975001EB88E /* HomeViewController.h */, 413 6E84E3AD1F27A975001EB88E /* HomeViewController.h */,
409 6E84E3AE1F27A975001EB88E /* HomeViewController.m */, 414 6E84E3AE1F27A975001EB88E /* HomeViewController.m */,
410 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */, 415 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */,
411 ); 416 );
412 name = Home; 417 name = Home;
413 sourceTree = "<group>"; 418 sourceTree = "<group>";
414 }; 419 };
415 6E84E3AA1F27A924001EB88E /* History */ = { 420 6E84E3AA1F27A924001EB88E /* History */ = {
416 isa = PBXGroup; 421 isa = PBXGroup;
417 children = ( 422 children = (
418 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */, 423 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */,
419 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */, 424 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */,
420 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */, 425 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */,
421 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */, 426 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */,
422 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */, 427 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */,
423 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */, 428 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */,
424 ); 429 );
425 name = History; 430 name = History;
426 sourceTree = "<group>"; 431 sourceTree = "<group>";
427 }; 432 };
428 6E84E3AB1F27A946001EB88E /* Ranking */ = { 433 6E84E3AB1F27A946001EB88E /* Ranking */ = {
429 isa = PBXGroup; 434 isa = PBXGroup;
430 children = ( 435 children = (
431 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */, 436 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */,
432 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */, 437 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */,
433 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */, 438 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */,
434 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */, 439 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */,
435 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */, 440 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */,
436 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */, 441 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */,
437 ); 442 );
438 name = Ranking; 443 name = Ranking;
439 sourceTree = "<group>"; 444 sourceTree = "<group>";
440 }; 445 };
441 6E84E3AC1F27A954001EB88E /* SNS */ = { 446 6E84E3AC1F27A954001EB88E /* SNS */ = {
442 isa = PBXGroup; 447 isa = PBXGroup;
443 children = ( 448 children = (
449 E95F4CEF1F48B37100D27E80 /* MyGroup */,
444 E95F4CE91F475C4B00D27E80 /* CreateGroup */, 450 E95F4CE91F475C4B00D27E80 /* CreateGroup */,
445 E933E6751F4050E6002926F5 /* GroupDetail */, 451 E933E6751F4050E6002926F5 /* GroupDetail */,
446 E933E6671F3E0479002926F5 /* SeachGroup */, 452 E933E6671F3E0479002926F5 /* SeachGroup */,
447 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */, 453 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */,
448 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */, 454 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */,
449 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */, 455 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */,
450 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */, 456 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */,
451 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */, 457 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */,
452 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */, 458 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */,
453 ); 459 );
454 name = SNS; 460 name = SNS;
455 sourceTree = "<group>"; 461 sourceTree = "<group>";
456 }; 462 };
457 6E84E3C11F27AC89001EB88E /* Map */ = { 463 6E84E3C11F27AC89001EB88E /* Map */ = {
458 isa = PBXGroup; 464 isa = PBXGroup;
459 children = ( 465 children = (
460 6E84E3C21F27ACAE001EB88E /* MapViewController.h */, 466 6E84E3C21F27ACAE001EB88E /* MapViewController.h */,
461 6E84E3C31F27ACAE001EB88E /* MapViewController.m */, 467 6E84E3C31F27ACAE001EB88E /* MapViewController.m */,
462 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */, 468 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */,
463 ); 469 );
464 name = Map; 470 name = Map;
465 sourceTree = "<group>"; 471 sourceTree = "<group>";
466 }; 472 };
467 6E8DA0F31F2BAC0800CCE941 /* Today */ = { 473 6E8DA0F31F2BAC0800CCE941 /* Today */ = {
468 isa = PBXGroup; 474 isa = PBXGroup;
469 children = ( 475 children = (
470 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */, 476 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */,
471 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */, 477 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */,
472 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */, 478 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */,
473 ); 479 );
474 name = Today; 480 name = Today;
475 sourceTree = "<group>"; 481 sourceTree = "<group>";
476 }; 482 };
477 6ECC406D1F2A5FA500AAEB97 /* Library */ = { 483 6ECC406D1F2A5FA500AAEB97 /* Library */ = {
478 isa = PBXGroup; 484 isa = PBXGroup;
479 children = ( 485 children = (
480 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */, 486 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */,
481 6ECC406E1F2A5FB200AAEB97 /* Category */, 487 6ECC406E1F2A5FB200AAEB97 /* Category */,
482 ); 488 );
483 name = Library; 489 name = Library;
484 sourceTree = "<group>"; 490 sourceTree = "<group>";
485 }; 491 };
486 6ECC406E1F2A5FB200AAEB97 /* Category */ = { 492 6ECC406E1F2A5FB200AAEB97 /* Category */ = {
487 isa = PBXGroup; 493 isa = PBXGroup;
488 children = ( 494 children = (
489 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */, 495 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */,
490 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */, 496 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */,
491 ); 497 );
492 name = Category; 498 name = Category;
493 sourceTree = "<group>"; 499 sourceTree = "<group>";
494 }; 500 };
495 6EDC8BEB1F2C2F3300765ACC /* Common */ = { 501 6EDC8BEB1F2C2F3300765ACC /* Common */ = {
496 isa = PBXGroup; 502 isa = PBXGroup;
497 children = ( 503 children = (
498 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */, 504 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */,
499 6EDC8BED1F2C2FB800765ACC /* Utilities.m */, 505 6EDC8BED1F2C2FB800765ACC /* Utilities.m */,
500 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */, 506 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */,
501 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */, 507 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */,
502 ); 508 );
503 name = Common; 509 name = Common;
504 sourceTree = "<group>"; 510 sourceTree = "<group>";
505 }; 511 };
506 783929CF869F5081762B3DCA /* Products */ = { 512 783929CF869F5081762B3DCA /* Products */ = {
507 isa = PBXGroup; 513 isa = PBXGroup;
508 children = ( 514 children = (
509 ); 515 );
510 name = Products; 516 name = Products;
511 sourceTree = "<group>"; 517 sourceTree = "<group>";
512 }; 518 };
513 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = { 519 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = {
514 isa = PBXGroup; 520 isa = PBXGroup;
515 children = ( 521 children = (
516 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */, 522 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */,
517 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */, 523 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */,
518 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */, 524 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */,
519 ); 525 );
520 name = ConfirmForgetPass; 526 name = ConfirmForgetPass;
521 sourceTree = "<group>"; 527 sourceTree = "<group>";
522 }; 528 };
523 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = { 529 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = {
524 isa = PBXGroup; 530 isa = PBXGroup;
525 children = ( 531 children = (
526 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */, 532 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */,
527 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */, 533 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */,
528 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */, 534 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */,
529 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */, 535 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */,
530 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */, 536 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */,
531 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */, 537 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */,
532 ); 538 );
533 name = BaseViewController; 539 name = BaseViewController;
534 sourceTree = "<group>"; 540 sourceTree = "<group>";
535 }; 541 };
536 9CBDA0FB1F2F03490055DED1 /* Register */ = { 542 9CBDA0FB1F2F03490055DED1 /* Register */ = {
537 isa = PBXGroup; 543 isa = PBXGroup;
538 children = ( 544 children = (
539 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */, 545 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */,
540 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */, 546 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */,
541 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */, 547 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */,
542 ); 548 );
543 name = Register; 549 name = Register;
544 sourceTree = "<group>"; 550 sourceTree = "<group>";
545 }; 551 };
546 DE8269E957EA47CD771BAB33 /* Pods */ = { 552 DE8269E957EA47CD771BAB33 /* Pods */ = {
547 isa = PBXGroup; 553 isa = PBXGroup;
548 children = ( 554 children = (
549 6E84E3721F27A700001EB88E /* Products */, 555 6E84E3721F27A700001EB88E /* Products */,
550 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */, 556 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */,
551 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */, 557 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */,
552 ); 558 );
553 name = Pods; 559 name = Pods;
554 sourceTree = "<group>"; 560 sourceTree = "<group>";
555 }; 561 };
556 E933E6671F3E0479002926F5 /* SeachGroup */ = { 562 E933E6671F3E0479002926F5 /* SeachGroup */ = {
557 isa = PBXGroup; 563 isa = PBXGroup;
558 children = ( 564 children = (
559 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */, 565 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */,
560 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */, 566 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */,
561 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */, 567 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */,
562 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */, 568 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */,
563 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */, 569 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */,
564 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */, 570 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */,
565 ); 571 );
566 name = SeachGroup; 572 name = SeachGroup;
567 sourceTree = "<group>"; 573 sourceTree = "<group>";
568 }; 574 };
569 E933E6751F4050E6002926F5 /* GroupDetail */ = { 575 E933E6751F4050E6002926F5 /* GroupDetail */ = {
570 isa = PBXGroup; 576 isa = PBXGroup;
571 children = ( 577 children = (
572 E933E6761F40513C002926F5 /* GroupDetailViewController.h */, 578 E933E6761F40513C002926F5 /* GroupDetailViewController.h */,
573 E933E6771F40513C002926F5 /* GroupDetailViewController.m */, 579 E933E6771F40513C002926F5 /* GroupDetailViewController.m */,
574 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */, 580 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */,
575 ); 581 );
576 name = GroupDetail; 582 name = GroupDetail;
577 sourceTree = "<group>"; 583 sourceTree = "<group>";
578 }; 584 };
579 E9373E441F35966D0059355A /* AutoTranslateView */ = { 585 E9373E441F35966D0059355A /* AutoTranslateView */ = {
580 isa = PBXGroup; 586 isa = PBXGroup;
581 children = ( 587 children = (
582 E9373E451F3596940059355A /* AutoTransLabel.h */, 588 E9373E451F3596940059355A /* AutoTransLabel.h */,
583 E9373E461F3596940059355A /* AutoTransLabel.m */, 589 E9373E461F3596940059355A /* AutoTransLabel.m */,
584 E96855081F3C444900317CEF /* AutoTransButton.h */, 590 E96855081F3C444900317CEF /* AutoTransButton.h */,
585 E96855091F3C444900317CEF /* AutoTransButton.m */, 591 E96855091F3C444900317CEF /* AutoTransButton.m */,
586 ); 592 );
587 name = AutoTranslateView; 593 name = AutoTranslateView;
588 sourceTree = "<group>"; 594 sourceTree = "<group>";
589 }; 595 };
590 E95F4CE91F475C4B00D27E80 /* CreateGroup */ = { 596 E95F4CE91F475C4B00D27E80 /* CreateGroup */ = {
591 isa = PBXGroup; 597 isa = PBXGroup;
592 children = ( 598 children = (
593 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */, 599 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */,
594 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */, 600 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */,
595 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */, 601 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */,
596 ); 602 );
597 name = CreateGroup; 603 name = CreateGroup;
598 sourceTree = "<group>"; 604 sourceTree = "<group>";
599 }; 605 };
606 E95F4CEF1F48B37100D27E80 /* MyGroup */ = {
607 isa = PBXGroup;
608 children = (
609 E95F4CF01F48B39200D27E80 /* MyGroupViewController.h */,
610 E95F4CF11F48B39200D27E80 /* MyGroupViewController.m */,
611 E95F4CF21F48B39200D27E80 /* MyGroupViewController.xib */,
612 );
613 name = MyGroup;
614 sourceTree = "<group>";
615 };
600 E99E13A71F336F0C00C78787 /* CustomView */ = { 616 E99E13A71F336F0C00C78787 /* CustomView */ = {
601 isa = PBXGroup; 617 isa = PBXGroup;
602 children = ( 618 children = (
603 E9373E441F35966D0059355A /* AutoTranslateView */, 619 E9373E441F35966D0059355A /* AutoTranslateView */,
604 E99E13A81F336F1700C78787 /* CollectionView */, 620 E99E13A81F336F1700C78787 /* CollectionView */,
605 ); 621 );
606 name = CustomView; 622 name = CustomView;
607 sourceTree = "<group>"; 623 sourceTree = "<group>";
608 }; 624 };
609 E99E13A81F336F1700C78787 /* CollectionView */ = { 625 E99E13A81F336F1700C78787 /* CollectionView */ = {
610 isa = PBXGroup; 626 isa = PBXGroup;
611 children = ( 627 children = (
612 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */, 628 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */,
613 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */, 629 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */,
614 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */, 630 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */,
615 E99E13A91F336F3600C78787 /* CollectionView.h */, 631 E99E13A91F336F3600C78787 /* CollectionView.h */,
616 E99E13AA1F336F3600C78787 /* CollectionView.m */, 632 E99E13AA1F336F3600C78787 /* CollectionView.m */,
617 E99E13AC1F336F4500C78787 /* CollectionView.xib */, 633 E99E13AC1F336F4500C78787 /* CollectionView.xib */,
618 ); 634 );
619 name = CollectionView; 635 name = CollectionView;
620 sourceTree = "<group>"; 636 sourceTree = "<group>";
621 }; 637 };
622 /* End PBXGroup section */ 638 /* End PBXGroup section */
623 639
624 /* Begin PBXNativeTarget section */ 640 /* Begin PBXNativeTarget section */
625 6E84E3701F27A700001EB88E /* LifeLog */ = { 641 6E84E3701F27A700001EB88E /* LifeLog */ = {
626 isa = PBXNativeTarget; 642 isa = PBXNativeTarget;
627 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */; 643 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */;
628 buildPhases = ( 644 buildPhases = (
629 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */, 645 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */,
630 6E84E36D1F27A700001EB88E /* Sources */, 646 6E84E36D1F27A700001EB88E /* Sources */,
631 6E84E36E1F27A700001EB88E /* Frameworks */, 647 6E84E36E1F27A700001EB88E /* Frameworks */,
632 6E84E36F1F27A700001EB88E /* Resources */, 648 6E84E36F1F27A700001EB88E /* Resources */,
633 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */, 649 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */,
634 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */, 650 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */,
635 ); 651 );
636 buildRules = ( 652 buildRules = (
637 ); 653 );
638 dependencies = ( 654 dependencies = (
639 ); 655 );
640 name = LifeLog; 656 name = LifeLog;
641 productName = LifeLog; 657 productName = LifeLog;
642 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */; 658 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */;
643 productType = "com.apple.product-type.application"; 659 productType = "com.apple.product-type.application";
644 }; 660 };
645 6E84E3891F27A703001EB88E /* LifeLogTests */ = { 661 6E84E3891F27A703001EB88E /* LifeLogTests */ = {
646 isa = PBXNativeTarget; 662 isa = PBXNativeTarget;
647 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */; 663 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */;
648 buildPhases = ( 664 buildPhases = (
649 6E84E3861F27A703001EB88E /* Sources */, 665 6E84E3861F27A703001EB88E /* Sources */,
650 6E84E3871F27A703001EB88E /* Frameworks */, 666 6E84E3871F27A703001EB88E /* Frameworks */,
651 6E84E3881F27A703001EB88E /* Resources */, 667 6E84E3881F27A703001EB88E /* Resources */,
652 ); 668 );
653 buildRules = ( 669 buildRules = (
654 ); 670 );
655 dependencies = ( 671 dependencies = (
656 6E84E38C1F27A703001EB88E /* PBXTargetDependency */, 672 6E84E38C1F27A703001EB88E /* PBXTargetDependency */,
657 ); 673 );
658 name = LifeLogTests; 674 name = LifeLogTests;
659 productName = LifeLogTests; 675 productName = LifeLogTests;
660 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */; 676 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */;
661 productType = "com.apple.product-type.bundle.unit-test"; 677 productType = "com.apple.product-type.bundle.unit-test";
662 }; 678 };
663 6E84E3941F27A703001EB88E /* LifeLogUITests */ = { 679 6E84E3941F27A703001EB88E /* LifeLogUITests */ = {
664 isa = PBXNativeTarget; 680 isa = PBXNativeTarget;
665 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */; 681 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */;
666 buildPhases = ( 682 buildPhases = (
667 6E84E3911F27A703001EB88E /* Sources */, 683 6E84E3911F27A703001EB88E /* Sources */,
668 6E84E3921F27A703001EB88E /* Frameworks */, 684 6E84E3921F27A703001EB88E /* Frameworks */,
669 6E84E3931F27A703001EB88E /* Resources */, 685 6E84E3931F27A703001EB88E /* Resources */,
670 ); 686 );
671 buildRules = ( 687 buildRules = (
672 ); 688 );
673 dependencies = ( 689 dependencies = (
674 6E84E3971F27A703001EB88E /* PBXTargetDependency */, 690 6E84E3971F27A703001EB88E /* PBXTargetDependency */,
675 ); 691 );
676 name = LifeLogUITests; 692 name = LifeLogUITests;
677 productName = LifeLogUITests; 693 productName = LifeLogUITests;
678 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */; 694 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */;
679 productType = "com.apple.product-type.bundle.ui-testing"; 695 productType = "com.apple.product-type.bundle.ui-testing";
680 }; 696 };
681 /* End PBXNativeTarget section */ 697 /* End PBXNativeTarget section */
682 698
683 /* Begin PBXProject section */ 699 /* Begin PBXProject section */
684 6E84E3691F27A700001EB88E /* Project object */ = { 700 6E84E3691F27A700001EB88E /* Project object */ = {
685 isa = PBXProject; 701 isa = PBXProject;
686 attributes = { 702 attributes = {
687 LastUpgradeCheck = 0830; 703 LastUpgradeCheck = 0830;
688 ORGANIZATIONNAME = PhongNV; 704 ORGANIZATIONNAME = PhongNV;
689 TargetAttributes = { 705 TargetAttributes = {
690 6E84E3701F27A700001EB88E = { 706 6E84E3701F27A700001EB88E = {
691 CreatedOnToolsVersion = 8.3.3; 707 CreatedOnToolsVersion = 8.3.3;
692 DevelopmentTeam = UXU4V3VUN4; 708 DevelopmentTeam = UXU4V3VUN4;
693 ProvisioningStyle = Automatic; 709 ProvisioningStyle = Automatic;
694 }; 710 };
695 6E84E3891F27A703001EB88E = { 711 6E84E3891F27A703001EB88E = {
696 CreatedOnToolsVersion = 8.3.3; 712 CreatedOnToolsVersion = 8.3.3;
697 ProvisioningStyle = Automatic; 713 ProvisioningStyle = Automatic;
698 TestTargetID = 6E84E3701F27A700001EB88E; 714 TestTargetID = 6E84E3701F27A700001EB88E;
699 }; 715 };
700 6E84E3941F27A703001EB88E = { 716 6E84E3941F27A703001EB88E = {
701 CreatedOnToolsVersion = 8.3.3; 717 CreatedOnToolsVersion = 8.3.3;
702 ProvisioningStyle = Automatic; 718 ProvisioningStyle = Automatic;
703 TestTargetID = 6E84E3701F27A700001EB88E; 719 TestTargetID = 6E84E3701F27A700001EB88E;
704 }; 720 };
705 }; 721 };
706 }; 722 };
707 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */; 723 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */;
708 compatibilityVersion = "Xcode 3.2"; 724 compatibilityVersion = "Xcode 3.2";
709 developmentRegion = English; 725 developmentRegion = English;
710 hasScannedForEncodings = 0; 726 hasScannedForEncodings = 0;
711 knownRegions = ( 727 knownRegions = (
712 en, 728 en,
713 Base, 729 Base,
714 ); 730 );
715 mainGroup = 6E84E3681F27A700001EB88E; 731 mainGroup = 6E84E3681F27A700001EB88E;
716 productRefGroup = 783929CF869F5081762B3DCA /* Products */; 732 productRefGroup = 783929CF869F5081762B3DCA /* Products */;
717 projectDirPath = ""; 733 projectDirPath = "";
718 projectRoot = ""; 734 projectRoot = "";
719 targets = ( 735 targets = (
720 6E84E3701F27A700001EB88E /* LifeLog */, 736 6E84E3701F27A700001EB88E /* LifeLog */,
721 6E84E3891F27A703001EB88E /* LifeLogTests */, 737 6E84E3891F27A703001EB88E /* LifeLogTests */,
722 6E84E3941F27A703001EB88E /* LifeLogUITests */, 738 6E84E3941F27A703001EB88E /* LifeLogUITests */,
723 ); 739 );
724 }; 740 };
725 /* End PBXProject section */ 741 /* End PBXProject section */
726 742
727 /* Begin PBXResourcesBuildPhase section */ 743 /* Begin PBXResourcesBuildPhase section */
728 6E84E36F1F27A700001EB88E /* Resources */ = { 744 6E84E36F1F27A700001EB88E /* Resources */ = {
729 isa = PBXResourcesBuildPhase; 745 isa = PBXResourcesBuildPhase;
730 buildActionMask = 2147483647; 746 buildActionMask = 2147483647;
731 files = ( 747 files = (
732 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */, 748 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */,
733 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */, 749 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */,
734 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */, 750 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */,
735 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */, 751 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */,
736 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */, 752 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */,
737 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */, 753 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */,
738 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */, 754 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */,
739 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */, 755 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */,
740 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */, 756 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */,
741 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */, 757 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */,
742 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */, 758 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */,
743 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */, 759 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */,
744 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */, 760 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */,
745 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */, 761 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */,
746 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */, 762 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */,
747 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */, 763 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */,
764 E95F4CF41F48B39200D27E80 /* MyGroupViewController.xib in Resources */,
748 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */, 765 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */,
749 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */, 766 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */,
750 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */, 767 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */,
751 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */, 768 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */,
752 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */, 769 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */,
753 ); 770 );
754 runOnlyForDeploymentPostprocessing = 0; 771 runOnlyForDeploymentPostprocessing = 0;
755 }; 772 };
756 6E84E3881F27A703001EB88E /* Resources */ = { 773 6E84E3881F27A703001EB88E /* Resources */ = {
757 isa = PBXResourcesBuildPhase; 774 isa = PBXResourcesBuildPhase;
758 buildActionMask = 2147483647; 775 buildActionMask = 2147483647;
759 files = ( 776 files = (
760 ); 777 );
761 runOnlyForDeploymentPostprocessing = 0; 778 runOnlyForDeploymentPostprocessing = 0;
762 }; 779 };
763 6E84E3931F27A703001EB88E /* Resources */ = { 780 6E84E3931F27A703001EB88E /* Resources */ = {
764 isa = PBXResourcesBuildPhase; 781 isa = PBXResourcesBuildPhase;
765 buildActionMask = 2147483647; 782 buildActionMask = 2147483647;
766 files = ( 783 files = (
767 ); 784 );
768 runOnlyForDeploymentPostprocessing = 0; 785 runOnlyForDeploymentPostprocessing = 0;
769 }; 786 };
770 /* End PBXResourcesBuildPhase section */ 787 /* End PBXResourcesBuildPhase section */
771 788
772 /* Begin PBXShellScriptBuildPhase section */ 789 /* Begin PBXShellScriptBuildPhase section */
773 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = { 790 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = {
774 isa = PBXShellScriptBuildPhase; 791 isa = PBXShellScriptBuildPhase;
775 buildActionMask = 2147483647; 792 buildActionMask = 2147483647;
776 files = ( 793 files = (
777 ); 794 );
778 inputPaths = ( 795 inputPaths = (
779 ); 796 );
780 name = "[CP] Embed Pods Frameworks"; 797 name = "[CP] Embed Pods Frameworks";
781 outputPaths = ( 798 outputPaths = (
782 ); 799 );
783 runOnlyForDeploymentPostprocessing = 0; 800 runOnlyForDeploymentPostprocessing = 0;
784 shellPath = /bin/sh; 801 shellPath = /bin/sh;
785 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";
786 showEnvVarsInLog = 0; 803 showEnvVarsInLog = 0;
787 }; 804 };
788 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = { 805 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = {
789 isa = PBXShellScriptBuildPhase; 806 isa = PBXShellScriptBuildPhase;
790 buildActionMask = 2147483647; 807 buildActionMask = 2147483647;
791 files = ( 808 files = (
792 ); 809 );
793 inputPaths = ( 810 inputPaths = (
794 ); 811 );
795 name = "[CP] Check Pods Manifest.lock"; 812 name = "[CP] Check Pods Manifest.lock";
796 outputPaths = ( 813 outputPaths = (
797 ); 814 );
798 runOnlyForDeploymentPostprocessing = 0; 815 runOnlyForDeploymentPostprocessing = 0;
799 shellPath = /bin/sh; 816 shellPath = /bin/sh;
800 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";
801 showEnvVarsInLog = 0; 818 showEnvVarsInLog = 0;
802 }; 819 };
803 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = { 820 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = {
804 isa = PBXShellScriptBuildPhase; 821 isa = PBXShellScriptBuildPhase;
805 buildActionMask = 2147483647; 822 buildActionMask = 2147483647;
806 files = ( 823 files = (
807 ); 824 );
808 inputPaths = ( 825 inputPaths = (
809 ); 826 );
810 name = "[CP] Copy Pods Resources"; 827 name = "[CP] Copy Pods Resources";
811 outputPaths = ( 828 outputPaths = (
812 ); 829 );
813 runOnlyForDeploymentPostprocessing = 0; 830 runOnlyForDeploymentPostprocessing = 0;
814 shellPath = /bin/sh; 831 shellPath = /bin/sh;
815 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";
816 showEnvVarsInLog = 0; 833 showEnvVarsInLog = 0;
817 }; 834 };
818 /* End PBXShellScriptBuildPhase section */ 835 /* End PBXShellScriptBuildPhase section */
819 836
820 /* Begin PBXSourcesBuildPhase section */ 837 /* Begin PBXSourcesBuildPhase section */
821 6E84E36D1F27A700001EB88E /* Sources */ = { 838 6E84E36D1F27A700001EB88E /* Sources */ = {
822 isa = PBXSourcesBuildPhase; 839 isa = PBXSourcesBuildPhase;
823 buildActionMask = 2147483647; 840 buildActionMask = 2147483647;
824 files = ( 841 files = (
825 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */, 842 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */,
826 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */, 843 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */,
827 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */, 844 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */,
828 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */, 845 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */,
829 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */, 846 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */,
830 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */, 847 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */,
831 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */, 848 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */,
832 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */, 849 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */,
833 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */, 850 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */,
834 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */, 851 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */,
835 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */, 852 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */,
836 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */, 853 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */,
837 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */, 854 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */,
838 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */, 855 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */,
839 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */, 856 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */,
840 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */, 857 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */,
841 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */, 858 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */,
842 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */, 859 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */,
843 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */, 860 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */,
844 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */, 861 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */,
845 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */, 862 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */,
846 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */, 863 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */,
847 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */, 864 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */,
848 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */, 865 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */,
849 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */, 866 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */,
850 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */, 867 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */,
851 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */, 868 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */,
852 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */, 869 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */,
853 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */, 870 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */,
854 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */, 871 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */,
855 6E18CEDC1F2E40F50029891F /* User.m in Sources */, 872 6E18CEDC1F2E40F50029891F /* User.m in Sources */,
856 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */, 873 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */,
857 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */, 874 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */,
858 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */, 875 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */,
859 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */, 876 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */,
860 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */, 877 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */,
861 6E84E3761F27A701001EB88E /* main.m in Sources */, 878 6E84E3761F27A701001EB88E /* main.m in Sources */,
862 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */, 879 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */,
863 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */, 880 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */,
881 E95F4CF31F48B39200D27E80 /* MyGroupViewController.m in Sources */,
864 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */, 882 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */,
865 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */, 883 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */,
866 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */, 884 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */,
867 ); 885 );
868 runOnlyForDeploymentPostprocessing = 0; 886 runOnlyForDeploymentPostprocessing = 0;
869 }; 887 };
870 6E84E3861F27A703001EB88E /* Sources */ = { 888 6E84E3861F27A703001EB88E /* Sources */ = {
871 isa = PBXSourcesBuildPhase; 889 isa = PBXSourcesBuildPhase;
872 buildActionMask = 2147483647; 890 buildActionMask = 2147483647;
873 files = ( 891 files = (
874 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */, 892 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */,
875 ); 893 );
876 runOnlyForDeploymentPostprocessing = 0; 894 runOnlyForDeploymentPostprocessing = 0;
877 }; 895 };
878 6E84E3911F27A703001EB88E /* Sources */ = { 896 6E84E3911F27A703001EB88E /* Sources */ = {
879 isa = PBXSourcesBuildPhase; 897 isa = PBXSourcesBuildPhase;
880 buildActionMask = 2147483647; 898 buildActionMask = 2147483647;
881 files = ( 899 files = (
882 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */, 900 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */,
883 ); 901 );
884 runOnlyForDeploymentPostprocessing = 0; 902 runOnlyForDeploymentPostprocessing = 0;
885 }; 903 };
886 /* End PBXSourcesBuildPhase section */ 904 /* End PBXSourcesBuildPhase section */
887 905
888 /* Begin PBXTargetDependency section */ 906 /* Begin PBXTargetDependency section */
889 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = { 907 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = {
890 isa = PBXTargetDependency; 908 isa = PBXTargetDependency;
891 target = 6E84E3701F27A700001EB88E /* LifeLog */; 909 target = 6E84E3701F27A700001EB88E /* LifeLog */;
892 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */; 910 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */;
893 }; 911 };
894 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = { 912 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = {
895 isa = PBXTargetDependency; 913 isa = PBXTargetDependency;
896 target = 6E84E3701F27A700001EB88E /* LifeLog */; 914 target = 6E84E3701F27A700001EB88E /* LifeLog */;
897 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */; 915 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */;
898 }; 916 };
899 /* End PBXTargetDependency section */ 917 /* End PBXTargetDependency section */
900 918
901 /* Begin PBXVariantGroup section */ 919 /* Begin PBXVariantGroup section */
902 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = { 920 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = {
903 isa = PBXVariantGroup; 921 isa = PBXVariantGroup;
904 children = ( 922 children = (
905 6E84E3831F27A701001EB88E /* Base */, 923 6E84E3831F27A701001EB88E /* Base */,
906 ); 924 );
907 name = LaunchScreen.storyboard; 925 name = LaunchScreen.storyboard;
908 sourceTree = "<group>"; 926 sourceTree = "<group>";
909 }; 927 };
910 /* End PBXVariantGroup section */ 928 /* End PBXVariantGroup section */
911 929
912 /* Begin XCBuildConfiguration section */ 930 /* Begin XCBuildConfiguration section */
913 6E84E39C1F27A703001EB88E /* Debug */ = { 931 6E84E39C1F27A703001EB88E /* Debug */ = {
914 isa = XCBuildConfiguration; 932 isa = XCBuildConfiguration;
915 buildSettings = { 933 buildSettings = {
916 ALWAYS_SEARCH_USER_PATHS = NO; 934 ALWAYS_SEARCH_USER_PATHS = NO;
917 CLANG_ANALYZER_NONNULL = YES; 935 CLANG_ANALYZER_NONNULL = YES;
918 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 936 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
919 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 937 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
920 CLANG_CXX_LIBRARY = "libc++"; 938 CLANG_CXX_LIBRARY = "libc++";
921 CLANG_ENABLE_MODULES = YES; 939 CLANG_ENABLE_MODULES = YES;
922 CLANG_ENABLE_OBJC_ARC = YES; 940 CLANG_ENABLE_OBJC_ARC = YES;
923 CLANG_WARN_BOOL_CONVERSION = YES; 941 CLANG_WARN_BOOL_CONVERSION = YES;
924 CLANG_WARN_CONSTANT_CONVERSION = YES; 942 CLANG_WARN_CONSTANT_CONVERSION = YES;
925 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 943 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
926 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 944 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
927 CLANG_WARN_EMPTY_BODY = YES; 945 CLANG_WARN_EMPTY_BODY = YES;
928 CLANG_WARN_ENUM_CONVERSION = YES; 946 CLANG_WARN_ENUM_CONVERSION = YES;
929 CLANG_WARN_INFINITE_RECURSION = YES; 947 CLANG_WARN_INFINITE_RECURSION = YES;
930 CLANG_WARN_INT_CONVERSION = YES; 948 CLANG_WARN_INT_CONVERSION = YES;
931 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 949 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
932 CLANG_WARN_SUSPICIOUS_MOVE = YES; 950 CLANG_WARN_SUSPICIOUS_MOVE = YES;
933 CLANG_WARN_UNREACHABLE_CODE = YES; 951 CLANG_WARN_UNREACHABLE_CODE = YES;
934 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 952 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
935 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 953 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
936 COPY_PHASE_STRIP = NO; 954 COPY_PHASE_STRIP = NO;
937 DEBUG_INFORMATION_FORMAT = dwarf; 955 DEBUG_INFORMATION_FORMAT = dwarf;
938 ENABLE_STRICT_OBJC_MSGSEND = YES; 956 ENABLE_STRICT_OBJC_MSGSEND = YES;
939 ENABLE_TESTABILITY = YES; 957 ENABLE_TESTABILITY = YES;
940 GCC_C_LANGUAGE_STANDARD = gnu99; 958 GCC_C_LANGUAGE_STANDARD = gnu99;
941 GCC_DYNAMIC_NO_PIC = NO; 959 GCC_DYNAMIC_NO_PIC = NO;
942 GCC_NO_COMMON_BLOCKS = YES; 960 GCC_NO_COMMON_BLOCKS = YES;
943 GCC_OPTIMIZATION_LEVEL = 0; 961 GCC_OPTIMIZATION_LEVEL = 0;
944 GCC_PREPROCESSOR_DEFINITIONS = ( 962 GCC_PREPROCESSOR_DEFINITIONS = (
945 "DEBUG=1", 963 "DEBUG=1",
946 "$(inherited)", 964 "$(inherited)",
947 ); 965 );
948 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 966 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
949 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 967 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
950 GCC_WARN_UNDECLARED_SELECTOR = YES; 968 GCC_WARN_UNDECLARED_SELECTOR = YES;
951 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 969 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
952 GCC_WARN_UNUSED_FUNCTION = YES; 970 GCC_WARN_UNUSED_FUNCTION = YES;
953 GCC_WARN_UNUSED_VARIABLE = YES; 971 GCC_WARN_UNUSED_VARIABLE = YES;
954 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 972 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
955 MTL_ENABLE_DEBUG_INFO = YES; 973 MTL_ENABLE_DEBUG_INFO = YES;
956 ONLY_ACTIVE_ARCH = YES; 974 ONLY_ACTIVE_ARCH = YES;
957 SDKROOT = iphoneos; 975 SDKROOT = iphoneos;
958 TARGETED_DEVICE_FAMILY = "1,2"; 976 TARGETED_DEVICE_FAMILY = "1,2";
959 }; 977 };
960 name = Debug; 978 name = Debug;
961 }; 979 };
962 6E84E39D1F27A703001EB88E /* Release */ = { 980 6E84E39D1F27A703001EB88E /* Release */ = {
963 isa = XCBuildConfiguration; 981 isa = XCBuildConfiguration;
964 buildSettings = { 982 buildSettings = {
965 ALWAYS_SEARCH_USER_PATHS = NO; 983 ALWAYS_SEARCH_USER_PATHS = NO;
966 CLANG_ANALYZER_NONNULL = YES; 984 CLANG_ANALYZER_NONNULL = YES;
967 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 985 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
968 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 986 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
969 CLANG_CXX_LIBRARY = "libc++"; 987 CLANG_CXX_LIBRARY = "libc++";
970 CLANG_ENABLE_MODULES = YES; 988 CLANG_ENABLE_MODULES = YES;
971 CLANG_ENABLE_OBJC_ARC = YES; 989 CLANG_ENABLE_OBJC_ARC = YES;
972 CLANG_WARN_BOOL_CONVERSION = YES; 990 CLANG_WARN_BOOL_CONVERSION = YES;
973 CLANG_WARN_CONSTANT_CONVERSION = YES; 991 CLANG_WARN_CONSTANT_CONVERSION = YES;
974 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 992 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
975 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 993 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
976 CLANG_WARN_EMPTY_BODY = YES; 994 CLANG_WARN_EMPTY_BODY = YES;
977 CLANG_WARN_ENUM_CONVERSION = YES; 995 CLANG_WARN_ENUM_CONVERSION = YES;
978 CLANG_WARN_INFINITE_RECURSION = YES; 996 CLANG_WARN_INFINITE_RECURSION = YES;
979 CLANG_WARN_INT_CONVERSION = YES; 997 CLANG_WARN_INT_CONVERSION = YES;
980 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 998 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
981 CLANG_WARN_SUSPICIOUS_MOVE = YES; 999 CLANG_WARN_SUSPICIOUS_MOVE = YES;
982 CLANG_WARN_UNREACHABLE_CODE = YES; 1000 CLANG_WARN_UNREACHABLE_CODE = YES;
983 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 1001 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
984 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1002 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
985 COPY_PHASE_STRIP = NO; 1003 COPY_PHASE_STRIP = NO;
986 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 1004 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
987 ENABLE_NS_ASSERTIONS = NO; 1005 ENABLE_NS_ASSERTIONS = NO;
988 ENABLE_STRICT_OBJC_MSGSEND = YES; 1006 ENABLE_STRICT_OBJC_MSGSEND = YES;
989 GCC_C_LANGUAGE_STANDARD = gnu99; 1007 GCC_C_LANGUAGE_STANDARD = gnu99;
990 GCC_NO_COMMON_BLOCKS = YES; 1008 GCC_NO_COMMON_BLOCKS = YES;
991 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 1009 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
992 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 1010 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
993 GCC_WARN_UNDECLARED_SELECTOR = YES; 1011 GCC_WARN_UNDECLARED_SELECTOR = YES;
994 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 1012 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
995 GCC_WARN_UNUSED_FUNCTION = YES; 1013 GCC_WARN_UNUSED_FUNCTION = YES;
996 GCC_WARN_UNUSED_VARIABLE = YES; 1014 GCC_WARN_UNUSED_VARIABLE = YES;
997 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 1015 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
998 MTL_ENABLE_DEBUG_INFO = NO; 1016 MTL_ENABLE_DEBUG_INFO = NO;
999 SDKROOT = iphoneos; 1017 SDKROOT = iphoneos;
1000 TARGETED_DEVICE_FAMILY = "1,2"; 1018 TARGETED_DEVICE_FAMILY = "1,2";
1001 VALIDATE_PRODUCT = YES; 1019 VALIDATE_PRODUCT = YES;
1002 }; 1020 };
1003 name = Release; 1021 name = Release;
1004 }; 1022 };
1005 6E84E39F1F27A703001EB88E /* Debug */ = { 1023 6E84E39F1F27A703001EB88E /* Debug */ = {
1006 isa = XCBuildConfiguration; 1024 isa = XCBuildConfiguration;
1007 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */; 1025 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */;
1008 buildSettings = { 1026 buildSettings = {
1009 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1027 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1010 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1028 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1011 DEVELOPMENT_TEAM = ""; 1029 DEVELOPMENT_TEAM = "";
1012 INFOPLIST_FILE = LifeLog/Info.plist; 1030 INFOPLIST_FILE = LifeLog/Info.plist;
1013 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 1031 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1014 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1032 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1015 OTHER_LDFLAGS = ( 1033 OTHER_LDFLAGS = (
1016 "$(inherited)", 1034 "$(inherited)",
1017 "-framework", 1035 "-framework",
1018 "\"CircleProgressBar\"", 1036 "\"CircleProgressBar\"",
1019 "-all_load", 1037 "-all_load",
1020 "-ObjC", 1038 "-ObjC",
1021 ); 1039 );
1022 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 1040 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
1023 PRODUCT_NAME = "$(TARGET_NAME)"; 1041 PRODUCT_NAME = "$(TARGET_NAME)";
1024 PROVISIONING_PROFILE = ""; 1042 PROVISIONING_PROFILE = "";
1025 PROVISIONING_PROFILE_SPECIFIER = ""; 1043 PROVISIONING_PROFILE_SPECIFIER = "";
1026 }; 1044 };
1027 name = Debug; 1045 name = Debug;
1028 }; 1046 };
1029 6E84E3A01F27A703001EB88E /* Release */ = { 1047 6E84E3A01F27A703001EB88E /* Release */ = {
1030 isa = XCBuildConfiguration; 1048 isa = XCBuildConfiguration;
1031 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */; 1049 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */;
1032 buildSettings = { 1050 buildSettings = {
1033 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1051 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1034 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1052 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1035 DEVELOPMENT_TEAM = ""; 1053 DEVELOPMENT_TEAM = "";
1036 INFOPLIST_FILE = LifeLog/Info.plist; 1054 INFOPLIST_FILE = LifeLog/Info.plist;
1037 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 1055 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1038 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1056 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1039 OTHER_LDFLAGS = ( 1057 OTHER_LDFLAGS = (
1040 "$(inherited)", 1058 "$(inherited)",
1041 "-framework", 1059 "-framework",
1042 "\"CircleProgressBar\"", 1060 "\"CircleProgressBar\"",
1043 "-all_load", 1061 "-all_load",
1044 "-ObjC", 1062 "-ObjC",
1045 ); 1063 );
1046 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 1064 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
1047 PRODUCT_NAME = "$(TARGET_NAME)"; 1065 PRODUCT_NAME = "$(TARGET_NAME)";
1048 PROVISIONING_PROFILE = ""; 1066 PROVISIONING_PROFILE = "";
1049 PROVISIONING_PROFILE_SPECIFIER = ""; 1067 PROVISIONING_PROFILE_SPECIFIER = "";
1050 }; 1068 };
1051 name = Release; 1069 name = Release;
1052 }; 1070 };
1053 6E84E3A21F27A703001EB88E /* Debug */ = { 1071 6E84E3A21F27A703001EB88E /* Debug */ = {
1054 isa = XCBuildConfiguration; 1072 isa = XCBuildConfiguration;
1055 buildSettings = { 1073 buildSettings = {
1056 BUNDLE_LOADER = "$(TEST_HOST)"; 1074 BUNDLE_LOADER = "$(TEST_HOST)";
1057 INFOPLIST_FILE = LifeLogTests/Info.plist; 1075 INFOPLIST_FILE = LifeLogTests/Info.plist;
1058 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1076 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1059 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 1077 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
1060 PRODUCT_NAME = "$(TARGET_NAME)"; 1078 PRODUCT_NAME = "$(TARGET_NAME)";
1061 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 1079 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
1062 }; 1080 };
1063 name = Debug; 1081 name = Debug;
1064 }; 1082 };
1065 6E84E3A31F27A703001EB88E /* Release */ = { 1083 6E84E3A31F27A703001EB88E /* Release */ = {
1066 isa = XCBuildConfiguration; 1084 isa = XCBuildConfiguration;
1067 buildSettings = { 1085 buildSettings = {
1068 BUNDLE_LOADER = "$(TEST_HOST)"; 1086 BUNDLE_LOADER = "$(TEST_HOST)";
1069 INFOPLIST_FILE = LifeLogTests/Info.plist; 1087 INFOPLIST_FILE = LifeLogTests/Info.plist;
1070 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1088 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1071 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 1089 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
1072 PRODUCT_NAME = "$(TARGET_NAME)"; 1090 PRODUCT_NAME = "$(TARGET_NAME)";
1073 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 1091 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
1074 }; 1092 };
1075 name = Release; 1093 name = Release;
1076 }; 1094 };
1077 6E84E3A51F27A703001EB88E /* Debug */ = { 1095 6E84E3A51F27A703001EB88E /* Debug */ = {
1078 isa = XCBuildConfiguration; 1096 isa = XCBuildConfiguration;
1079 buildSettings = { 1097 buildSettings = {
1080 INFOPLIST_FILE = LifeLogUITests/Info.plist; 1098 INFOPLIST_FILE = LifeLogUITests/Info.plist;
1081 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1099 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1082 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 1100 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
1083 PRODUCT_NAME = "$(TARGET_NAME)"; 1101 PRODUCT_NAME = "$(TARGET_NAME)";
1084 TEST_TARGET_NAME = LifeLog; 1102 TEST_TARGET_NAME = LifeLog;
1085 }; 1103 };
1086 name = Debug; 1104 name = Debug;
1087 }; 1105 };
1088 6E84E3A61F27A703001EB88E /* Release */ = { 1106 6E84E3A61F27A703001EB88E /* Release */ = {
1089 isa = XCBuildConfiguration; 1107 isa = XCBuildConfiguration;
1090 buildSettings = { 1108 buildSettings = {
1091 INFOPLIST_FILE = LifeLogUITests/Info.plist; 1109 INFOPLIST_FILE = LifeLogUITests/Info.plist;
1092 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1110 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1093 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 1111 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
1094 PRODUCT_NAME = "$(TARGET_NAME)"; 1112 PRODUCT_NAME = "$(TARGET_NAME)";
1095 TEST_TARGET_NAME = LifeLog; 1113 TEST_TARGET_NAME = LifeLog;
1096 }; 1114 };
1097 name = Release; 1115 name = Release;
1098 }; 1116 };
1099 /* End XCBuildConfiguration section */ 1117 /* End XCBuildConfiguration section */
1100 1118
1101 /* Begin XCConfigurationList section */ 1119 /* Begin XCConfigurationList section */
1102 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = { 1120 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = {
1103 isa = XCConfigurationList; 1121 isa = XCConfigurationList;
1104 buildConfigurations = ( 1122 buildConfigurations = (
1105 6E84E39C1F27A703001EB88E /* Debug */, 1123 6E84E39C1F27A703001EB88E /* Debug */,
1106 6E84E39D1F27A703001EB88E /* Release */, 1124 6E84E39D1F27A703001EB88E /* Release */,
1107 ); 1125 );
1108 defaultConfigurationIsVisible = 0; 1126 defaultConfigurationIsVisible = 0;
1109 defaultConfigurationName = Release; 1127 defaultConfigurationName = Release;
1110 }; 1128 };
1111 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = { 1129 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = {
1112 isa = XCConfigurationList; 1130 isa = XCConfigurationList;
1113 buildConfigurations = ( 1131 buildConfigurations = (
1114 6E84E39F1F27A703001EB88E /* Debug */, 1132 6E84E39F1F27A703001EB88E /* Debug */,
1115 6E84E3A01F27A703001EB88E /* Release */, 1133 6E84E3A01F27A703001EB88E /* Release */,
1116 ); 1134 );
1117 defaultConfigurationIsVisible = 0; 1135 defaultConfigurationIsVisible = 0;
1118 defaultConfigurationName = Release; 1136 defaultConfigurationName = Release;
1119 }; 1137 };
1120 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = { 1138 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = {
1121 isa = XCConfigurationList; 1139 isa = XCConfigurationList;
1122 buildConfigurations = ( 1140 buildConfigurations = (
1123 6E84E3A21F27A703001EB88E /* Debug */, 1141 6E84E3A21F27A703001EB88E /* Debug */,
1124 6E84E3A31F27A703001EB88E /* Release */, 1142 6E84E3A31F27A703001EB88E /* Release */,
1125 ); 1143 );
1126 defaultConfigurationIsVisible = 0; 1144 defaultConfigurationIsVisible = 0;
1127 defaultConfigurationName = Release; 1145 defaultConfigurationName = Release;
1128 }; 1146 };
1129 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = { 1147 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = {
1130 isa = XCConfigurationList; 1148 isa = XCConfigurationList;
1131 buildConfigurations = ( 1149 buildConfigurations = (
1132 6E84E3A51F27A703001EB88E /* Debug */, 1150 6E84E3A51F27A703001EB88E /* Debug */,
1133 6E84E3A61F27A703001EB88E /* Release */, 1151 6E84E3A61F27A703001EB88E /* Release */,
1134 ); 1152 );
1135 defaultConfigurationIsVisible = 0; 1153 defaultConfigurationIsVisible = 0;
1136 defaultConfigurationName = Release; 1154 defaultConfigurationName = Release;
1137 }; 1155 };
1138 /* End XCConfigurationList section */ 1156 /* End XCConfigurationList section */
1139 }; 1157 };
1140 rootObject = 6E84E3691F27A700001EB88E /* Project object */; 1158 rootObject = 6E84E3691F27A700001EB88E /* Project object */;
1141 } 1159 }
1142 1160
LifeLog/LifeLog/Assets.xcassets/History/arrow_down.imageset/Contents.json
File was created 1 {
2 "images" : [
3 {
4 "idiom" : "universal",
5 "scale" : "1x"
6 },
7 {
8 "idiom" : "universal",
9 "filename" : "arrow_down.png",
10 "scale" : "2x"
11 },
12 {
13 "idiom" : "universal",
14 "scale" : "3x"
15 }
16 ],
17 "info" : {
18 "version" : 1,
19 "author" : "xcode"
20 }
21 }
LifeLog/LifeLog/Assets.xcassets/History/arrow_down.imageset/arrow_down.png

527 Bytes

LifeLog/LifeLog/GroupDetailViewController.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="GroupDetailViewController"> 11 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="GroupDetailViewController">
12 <connections> 12 <connections>
13 <outlet property="btJoinGrp" destination="caN-x7-hJz" id="B17-YC-Rmk"/> 13 <outlet property="btJoinGrp" destination="caN-x7-hJz" id="B17-YC-Rmk"/>
14 <outlet property="btSwitch" destination="gBg-k9-tgw" id="3ZZ-Qb-d3a"/> 14 <outlet property="btSwitch" destination="gBg-k9-tgw" id="3ZZ-Qb-d3a"/>
15 <outlet property="imgAva" destination="qYg-Gw-R2b" id="f9w-A2-u4G"/> 15 <outlet property="imgAva" destination="qYg-Gw-R2b" id="f9w-A2-u4G"/>
16 <outlet property="lbbGrpActiveMode" destination="O8z-6V-YFd" id="s8J-3i-pW3"/> 16 <outlet property="lbbGrpActiveMode" destination="O8z-6V-YFd" id="s8J-3i-pW3"/>
17 <outlet property="lblGrpGoal" destination="Bdy-dI-j47" id="AKx-8y-Ifm"/> 17 <outlet property="lblGrpGoal" destination="Bdy-dI-j47" id="AKx-8y-Ifm"/>
18 <outlet property="lblGrpName" destination="YWV-pS-TCo" id="VeU-Ov-uSD"/> 18 <outlet property="lblGrpName" destination="YWV-pS-TCo" id="VeU-Ov-uSD"/>
19 <outlet property="tableBase" destination="4VU-Ye-7Au" id="m1e-cS-Sxf"/> 19 <outlet property="tableBase" destination="4VU-Ye-7Au" id="m1e-cS-Sxf"/>
20 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> 20 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
21 </connections> 21 </connections>
22 </placeholder> 22 </placeholder>
23 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> 23 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
24 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> 24 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
25 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 25 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
26 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 26 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
27 <subviews> 27 <subviews>
28 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="25d-3H-0fr" userLabel="ViewHeader"> 28 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="25d-3H-0fr" userLabel="ViewHeader">
29 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 29 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
30 <subviews> 30 <subviews>
31 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SNS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DxD-Cy-0wi" customClass="AutoTransLabel"> 31 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SNS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DxD-Cy-0wi" customClass="AutoTransLabel">
32 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 32 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
33 <fontDescription key="fontDescription" type="system" pointSize="17"/> 33 <fontDescription key="fontDescription" type="system" pointSize="17"/>
34 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 34 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
35 <nil key="highlightedColor"/> 35 <nil key="highlightedColor"/>
36 <userDefinedRuntimeAttributes> 36 <userDefinedRuntimeAttributes>
37 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.title"/> 37 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.title"/>
38 </userDefinedRuntimeAttributes> 38 </userDefinedRuntimeAttributes>
39 </label> 39 </label>
40 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="O3M-Ba-zHF"> 40 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="O3M-Ba-zHF">
41 <rect key="frame" x="0.0" y="5" width="70" height="36"/> 41 <rect key="frame" x="0.0" y="5" width="70" height="36"/>
42 <constraints> 42 <constraints>
43 <constraint firstAttribute="width" constant="70" id="2Mk-ly-c0t"/> 43 <constraint firstAttribute="width" constant="70" id="2Mk-ly-c0t"/>
44 </constraints> 44 </constraints>
45 <state key="normal" image="today_back_button"/> 45 <state key="normal" image="today_back_button"/>
46 <connections> 46 <connections>
47 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="gS4-F3-fzi"/> 47 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="gS4-F3-fzi"/>
48 </connections> 48 </connections>
49 </button> 49 </button>
50 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="y09-DG-Krp"> 50 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="y09-DG-Krp">
51 <rect key="frame" x="330" y="0.0" width="45" height="46"/> 51 <rect key="frame" x="330" y="0.0" width="45" height="46"/>
52 <constraints> 52 <constraints>
53 <constraint firstAttribute="width" constant="45" id="hHa-aE-1zd"/> 53 <constraint firstAttribute="width" constant="45" id="hHa-aE-1zd"/>
54 </constraints> 54 </constraints>
55 <state key="normal" image="icon_menu"/> 55 <state key="normal" image="icon_menu"/>
56 </button> 56 </button>
57 </subviews> 57 </subviews>
58 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 58 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
59 <constraints> 59 <constraints>
60 <constraint firstItem="y09-DG-Krp" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" id="65z-ZM-a3D"/> 60 <constraint firstItem="y09-DG-Krp" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" id="65z-ZM-a3D"/>
61 <constraint firstItem="O3M-Ba-zHF" firstAttribute="leading" secondItem="25d-3H-0fr" secondAttribute="leading" id="CQk-IB-W9y"/> 61 <constraint firstItem="O3M-Ba-zHF" firstAttribute="leading" secondItem="25d-3H-0fr" secondAttribute="leading" id="CQk-IB-W9y"/>
62 <constraint firstAttribute="bottom" secondItem="y09-DG-Krp" secondAttribute="bottom" id="IWC-4b-gp6"/> 62 <constraint firstAttribute="bottom" secondItem="y09-DG-Krp" secondAttribute="bottom" id="IWC-4b-gp6"/>
63 <constraint firstItem="O3M-Ba-zHF" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" constant="5" id="JWL-bD-I2Z"/> 63 <constraint firstItem="O3M-Ba-zHF" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" constant="5" id="JWL-bD-I2Z"/>
64 <constraint firstItem="DxD-Cy-0wi" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" id="WYM-oV-6xn"/> 64 <constraint firstItem="DxD-Cy-0wi" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="top" id="WYM-oV-6xn"/>
65 <constraint firstAttribute="bottom" secondItem="O3M-Ba-zHF" secondAttribute="bottom" constant="5" id="ZA0-Bo-IQF"/> 65 <constraint firstAttribute="bottom" secondItem="O3M-Ba-zHF" secondAttribute="bottom" constant="5" id="ZA0-Bo-IQF"/>
66 <constraint firstItem="DxD-Cy-0wi" firstAttribute="leading" secondItem="25d-3H-0fr" secondAttribute="leading" id="cbx-fE-OaR"/> 66 <constraint firstItem="DxD-Cy-0wi" firstAttribute="leading" secondItem="25d-3H-0fr" secondAttribute="leading" id="cbx-fE-OaR"/>
67 <constraint firstAttribute="trailing" secondItem="DxD-Cy-0wi" secondAttribute="trailing" id="i0L-w8-Oxm"/> 67 <constraint firstAttribute="trailing" secondItem="DxD-Cy-0wi" secondAttribute="trailing" id="i0L-w8-Oxm"/>
68 <constraint firstAttribute="trailing" secondItem="y09-DG-Krp" secondAttribute="trailing" id="nNZ-jP-k6U"/> 68 <constraint firstAttribute="trailing" secondItem="y09-DG-Krp" secondAttribute="trailing" id="nNZ-jP-k6U"/>
69 <constraint firstAttribute="bottom" secondItem="DxD-Cy-0wi" secondAttribute="bottom" id="oxP-oa-3FJ"/> 69 <constraint firstAttribute="bottom" secondItem="DxD-Cy-0wi" secondAttribute="bottom" id="oxP-oa-3FJ"/>
70 <constraint firstAttribute="height" constant="46" id="u2G-4s-RB5"/> 70 <constraint firstAttribute="height" constant="46" id="u2G-4s-RB5"/>
71 </constraints> 71 </constraints>
72 </view> 72 </view>
73 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YWV-pS-TCo"> 73 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YWV-pS-TCo">
74 <rect key="frame" x="15" y="54" width="345" height="21"/> 74 <rect key="frame" x="15" y="54" width="345" height="21"/>
75 <constraints> 75 <constraints>
76 <constraint firstAttribute="height" constant="21" id="fQO-ja-W9R"/> 76 <constraint firstAttribute="height" constant="21" id="fQO-ja-W9R"/>
77 </constraints> 77 </constraints>
78 <fontDescription key="fontDescription" type="system" pointSize="17"/> 78 <fontDescription key="fontDescription" type="system" pointSize="17"/>
79 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 79 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
80 <nil key="highlightedColor"/> 80 <nil key="highlightedColor"/>
81 </label> 81 </label>
82 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O8z-6V-YFd"> 82 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="O8z-6V-YFd">
83 <rect key="frame" x="15" y="85" width="243" height="60"/> 83 <rect key="frame" x="15" y="85" width="243" height="60"/>
84 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 84 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
85 <constraints> 85 <constraints>
86 <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="60" id="Bid-NM-Ree"/> 86 <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="60" id="Bid-NM-Ree"/>
87 </constraints> 87 </constraints>
88 <fontDescription key="fontDescription" type="system" pointSize="14"/> 88 <fontDescription key="fontDescription" type="system" pointSize="14"/>
89 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 89 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
90 <nil key="highlightedColor"/> 90 <nil key="highlightedColor"/>
91 </label> 91 </label>
92 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bdy-dI-j47"> 92 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bdy-dI-j47">
93 <rect key="frame" x="15" y="160" width="345" height="80"/> 93 <rect key="frame" x="15" y="160" width="345" height="80"/>
94 <constraints> 94 <constraints>
95 <constraint firstAttribute="height" constant="80" id="jgH-57-Bae"/> 95 <constraint firstAttribute="height" constant="80" id="jgH-57-Bae"/>
96 </constraints> 96 </constraints>
97 <fontDescription key="fontDescription" type="system" pointSize="17"/> 97 <fontDescription key="fontDescription" type="system" pointSize="17"/>
98 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 98 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
99 <nil key="highlightedColor"/> 99 <nil key="highlightedColor"/>
100 </label> 100 </label>
101 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="qYg-Gw-R2b"> 101 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="qYg-Gw-R2b">
102 <rect key="frame" x="280" y="85" width="80" height="60"/> 102 <rect key="frame" x="280" y="85" width="80" height="60"/>
103 <constraints> 103 <constraints>
104 <constraint firstAttribute="width" constant="80" id="NEk-vg-zus"/> 104 <constraint firstAttribute="width" constant="80" id="NEk-vg-zus"/>
105 <constraint firstAttribute="height" constant="60" id="qlv-ht-SUw"/> 105 <constraint firstAttribute="height" constant="60" id="qlv-ht-SUw"/>
106 </constraints> 106 </constraints>
107 </imageView> 107 </imageView>
108 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gBg-k9-tgw" customClass="AutoTransButton"> 108 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gBg-k9-tgw" customClass="AutoTransButton">
109 <rect key="frame" x="15" y="270" width="162" height="30"/> 109 <rect key="frame" x="15" y="270" width="162" height="30"/>
110 <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 110 <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
111 <constraints> 111 <constraints>
112 <constraint firstAttribute="height" constant="30" id="6Ir-ZZ-NOb"/> 112 <constraint firstAttribute="height" constant="30" id="6Ir-ZZ-NOb"/>
113 </constraints> 113 </constraints>
114 <state key="normal" title="ใƒกใƒณใƒใƒผใ‚’่ฆ‹ใ‚‹"> 114 <state key="normal" title="ใƒกใƒณใƒใƒผใ‚’่ฆ‹ใ‚‹">
115 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 115 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
116 </state> 116 </state>
117 <userDefinedRuntimeAttributes> 117 <userDefinedRuntimeAttributes>
118 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 118 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
119 <integer key="value" value="5"/> 119 <integer key="value" value="5"/>
120 </userDefinedRuntimeAttribute> 120 </userDefinedRuntimeAttribute>
121 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.bt.viewMem"/> 121 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.bt.viewMem"/>
122 </userDefinedRuntimeAttributes> 122 </userDefinedRuntimeAttributes>
123 <connections> 123 <connections>
124 <action selector="clickSwitch:" destination="-1" eventType="touchUpInside" id="z4V-ym-fqS"/> 124 <action selector="clickSwitch:" destination="-1" eventType="touchUpInside" id="z4V-ym-fqS"/>
125 </connections> 125 </connections>
126 </button> 126 </button>
127 <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="caN-x7-hJz" customClass="AutoTransButton"> 127 <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="caN-x7-hJz" customClass="AutoTransButton">
128 <rect key="frame" x="197" y="270" width="162" height="30"/> 128 <rect key="frame" x="197" y="270" width="162" height="30"/>
129 <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 129 <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
130 <constraints> 130 <constraints>
131 <constraint firstAttribute="height" constant="30" id="gIs-Km-dbx"/> 131 <constraint firstAttribute="height" constant="30" id="gIs-Km-dbx"/>
132 </constraints> 132 </constraints>
133 <state key="normal" title="ใ‚ฐใƒซใƒผใƒ—ใซๅ‚ๅŠ ใ™ใ‚‹"> 133 <state key="normal" title="ใ‚ฐใƒซใƒผใƒ—ใซๅ‚ๅŠ ใ™ใ‚‹">
134 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 134 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
135 </state> 135 </state>
136 <userDefinedRuntimeAttributes> 136 <userDefinedRuntimeAttributes>
137 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 137 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
138 <integer key="value" value="5"/> 138 <integer key="value" value="5"/>
139 </userDefinedRuntimeAttribute> 139 </userDefinedRuntimeAttribute>
140 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.bt.joinGr"/> 140 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.bt.joinGr"/>
141 </userDefinedRuntimeAttributes> 141 </userDefinedRuntimeAttributes>
142 <connections> 142 <connections>
143 <action selector="clickJoin:" destination="-1" eventType="touchUpInside" id="Ukt-bi-Sw2"/> 143 <action selector="clickJoin:" destination="-1" eventType="touchUpInside" id="Ukt-bi-Sw2"/>
144 </connections> 144 </connections>
145 </button> 145 </button>
146 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="100" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="4VU-Ye-7Au"> 146 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="100" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="4VU-Ye-7Au">
147 <rect key="frame" x="0.0" y="310" width="375" height="307"/> 147 <rect key="frame" x="0.0" y="310" width="375" height="307"/>
148 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 148 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
149 <connections> 149 <connections>
150 <outlet property="dataSource" destination="-1" id="TLB-6X-bRI"/> 150 <outlet property="dataSource" destination="-1" id="TLB-6X-bRI"/>
151 <outlet property="delegate" destination="-1" id="QcJ-Yh-deE"/> 151 <outlet property="delegate" destination="-1" id="QcJ-Yh-deE"/>
152 </connections> 152 </connections>
153 </tableView> 153 </tableView>
154 </subviews> 154 </subviews>
155 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 155 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
156 <constraints> 156 <constraints>
157 <constraint firstItem="25d-3H-0fr" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="5o2-0w-AL5"/> 157 <constraint firstItem="25d-3H-0fr" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="5o2-0w-AL5"/>
158 <constraint firstAttribute="trailing" secondItem="25d-3H-0fr" secondAttribute="trailing" id="7IX-2R-C0n"/> 158 <constraint firstAttribute="trailing" secondItem="25d-3H-0fr" secondAttribute="trailing" id="7IX-2R-C0n"/>
159 <constraint firstItem="O8z-6V-YFd" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="81K-BQ-6tU"/> 159 <constraint firstItem="O8z-6V-YFd" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="81K-BQ-6tU"/>
160 <constraint firstAttribute="bottom" secondItem="4VU-Ye-7Au" secondAttribute="bottom" constant="50" id="GKY-NB-YYF"/> 160 <constraint firstAttribute="bottom" secondItem="4VU-Ye-7Au" secondAttribute="bottom" constant="50" id="GKY-NB-YYF"/>
161 <constraint firstItem="O8z-6V-YFd" firstAttribute="top" secondItem="YWV-pS-TCo" secondAttribute="bottom" constant="10" id="HOo-rH-ysj"/> 161 <constraint firstItem="O8z-6V-YFd" firstAttribute="top" secondItem="YWV-pS-TCo" secondAttribute="bottom" constant="10" id="HOo-rH-ysj"/>
162 <constraint firstItem="Bdy-dI-j47" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="I1a-bY-ME9"/> 162 <constraint firstItem="Bdy-dI-j47" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="I1a-bY-ME9"/>
163 <constraint firstItem="YWV-pS-TCo" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="IS9-SU-75m"/> 163 <constraint firstItem="YWV-pS-TCo" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="IS9-SU-75m"/>
164 <constraint firstAttribute="trailing" secondItem="Bdy-dI-j47" secondAttribute="trailing" constant="15" id="Ka2-Ki-Pu6"/> 164 <constraint firstAttribute="trailing" secondItem="Bdy-dI-j47" secondAttribute="trailing" constant="15" id="Ka2-Ki-Pu6"/>
165 <constraint firstItem="qYg-Gw-R2b" firstAttribute="top" secondItem="YWV-pS-TCo" secondAttribute="bottom" constant="10" id="One-fp-LTK"/> 165 <constraint firstItem="qYg-Gw-R2b" firstAttribute="top" secondItem="YWV-pS-TCo" secondAttribute="bottom" constant="10" id="One-fp-LTK"/>
166 <constraint firstAttribute="trailing" secondItem="qYg-Gw-R2b" secondAttribute="trailing" constant="15" id="PMd-CT-MVj"/> 166 <constraint firstAttribute="trailing" secondItem="qYg-Gw-R2b" secondAttribute="trailing" constant="15" id="PMd-CT-MVj"/>
167 <constraint firstItem="gBg-k9-tgw" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="bTf-qW-d1y"/> 167 <constraint firstItem="gBg-k9-tgw" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="bTf-qW-d1y"/>
168 <constraint firstItem="YWV-pS-TCo" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="bottom" constant="8" id="cKj-l3-dgv"/> 168 <constraint firstItem="YWV-pS-TCo" firstAttribute="top" secondItem="25d-3H-0fr" secondAttribute="bottom" constant="8" id="cKj-l3-dgv"/>
169 <constraint firstItem="4VU-Ye-7Au" firstAttribute="top" secondItem="caN-x7-hJz" secondAttribute="bottom" constant="10" id="eQe-Kl-cMp"/> 169 <constraint firstItem="4VU-Ye-7Au" firstAttribute="top" secondItem="caN-x7-hJz" secondAttribute="bottom" constant="10" id="eQe-Kl-cMp"/>
170 <constraint firstItem="4VU-Ye-7Au" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="fru-BN-M5T"/> 170 <constraint firstItem="4VU-Ye-7Au" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="fru-BN-M5T"/>
171 <constraint firstItem="caN-x7-hJz" firstAttribute="top" secondItem="gBg-k9-tgw" secondAttribute="top" id="gUS-Ty-4Hk"/> 171 <constraint firstItem="caN-x7-hJz" firstAttribute="top" secondItem="gBg-k9-tgw" secondAttribute="top" id="gUS-Ty-4Hk"/>
172 <constraint firstItem="qYg-Gw-R2b" firstAttribute="leading" secondItem="O8z-6V-YFd" secondAttribute="trailing" constant="22" id="gzU-2Q-G96"/> 172 <constraint firstItem="qYg-Gw-R2b" firstAttribute="leading" secondItem="O8z-6V-YFd" secondAttribute="trailing" constant="22" id="gzU-2Q-G96"/>
173 <constraint firstItem="caN-x7-hJz" firstAttribute="leading" secondItem="gBg-k9-tgw" secondAttribute="trailing" constant="20" id="hWK-jf-zee"/> 173 <constraint firstItem="caN-x7-hJz" firstAttribute="leading" secondItem="gBg-k9-tgw" secondAttribute="trailing" constant="20" id="hWK-jf-zee"/>
174 <constraint firstItem="25d-3H-0fr" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="jhT-CE-fr7"/> 174 <constraint firstItem="25d-3H-0fr" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="jhT-CE-fr7"/>
175 <constraint firstItem="caN-x7-hJz" firstAttribute="width" secondItem="gBg-k9-tgw" secondAttribute="width" id="mD6-eL-KB7"/> 175 <constraint firstItem="caN-x7-hJz" firstAttribute="width" secondItem="gBg-k9-tgw" secondAttribute="width" id="mD6-eL-KB7"/>
176 <constraint firstItem="gBg-k9-tgw" firstAttribute="top" secondItem="Bdy-dI-j47" secondAttribute="bottom" constant="30" id="mgw-uX-VOK"/> 176 <constraint firstItem="gBg-k9-tgw" firstAttribute="top" secondItem="Bdy-dI-j47" secondAttribute="bottom" constant="30" id="mgw-uX-VOK"/>
177 <constraint firstAttribute="trailing" secondItem="YWV-pS-TCo" secondAttribute="trailing" constant="15" id="rEO-bb-Pqr"/> 177 <constraint firstAttribute="trailing" secondItem="YWV-pS-TCo" secondAttribute="trailing" constant="15" id="rEO-bb-Pqr"/>
178 <constraint firstAttribute="trailing" secondItem="caN-x7-hJz" secondAttribute="trailing" constant="16" id="rRn-Vw-t5g"/> 178 <constraint firstAttribute="trailing" secondItem="caN-x7-hJz" secondAttribute="trailing" constant="16" id="rRn-Vw-t5g"/>
179 <constraint firstItem="Bdy-dI-j47" firstAttribute="top" secondItem="O8z-6V-YFd" secondAttribute="bottom" constant="15" id="xEO-fP-Riz"/> 179 <constraint firstItem="Bdy-dI-j47" firstAttribute="top" secondItem="O8z-6V-YFd" secondAttribute="bottom" constant="15" id="xEO-fP-Riz"/>
180 <constraint firstAttribute="trailing" secondItem="4VU-Ye-7Au" secondAttribute="trailing" id="ylN-vm-QF2"/> 180 <constraint firstAttribute="trailing" secondItem="4VU-Ye-7Au" secondAttribute="trailing" id="ylN-vm-QF2"/>
181 </constraints> 181 </constraints>
182 <point key="canvasLocation" x="24.5" y="52.5"/> 182 <point key="canvasLocation" x="24.5" y="52.5"/>
183 </view> 183 </view>
184 </objects> 184 </objects>
185 <resources> 185 <resources>
186 <image name="icon_menu" width="30" height="30"/> 186 <image name="icon_menu" width="30" height="30"/>
187 <image name="today_back_button" width="73" height="37"/> 187 <image name="today_back_button" width="73" height="37"/>
188 </resources> 188 </resources>
189 </document> 189 </document>
190 190
LifeLog/LifeLog/GroupObject.h
1 // 1 //
2 // GroupObject.h 2 // GroupObject.h
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 <Foundation/Foundation.h> 9 #import <Foundation/Foundation.h>
10 10
11 @interface GroupObject : NSObject 11 @interface GroupObject : NSObject
12 12
13 @property (nonatomic) int groupID; 13 @property (nonatomic) int groupID;
14 @property (nonatomic) int numSearch; 14 @property (nonatomic) int numSearch;
15 15
16 @property (nonatomic) int walkGoal; 16 @property (nonatomic) int walkGoal;
17 @property (nonatomic) int runGoal; 17 @property (nonatomic) int runGoal;
18 @property (nonatomic) int bikeGoal; 18 @property (nonatomic) int bikeGoal;
19 @property (nonatomic) int stepGoal; 19 @property (nonatomic) int stepGoal;
20 @property (nonatomic) int gymGoal; 20 @property (nonatomic) int gymGoal;
21 @property (nonatomic) int beginGoal; 21 @property (nonatomic) int beginGoal;
22 22
23 @property (nonatomic) BOOL isJoin; 23 @property (nonatomic) BOOL isJoin;
24 @property (nonatomic) BOOL walkMode; 24 @property (nonatomic) BOOL walkMode;
25 @property (nonatomic) BOOL runMode; 25 @property (nonatomic) BOOL runMode;
26 @property (nonatomic) BOOL bikeMode; 26 @property (nonatomic) BOOL bikeMode;
27 @property (nonatomic) BOOL stepMode; 27 @property (nonatomic) BOOL stepMode;
28 @property (nonatomic) BOOL gymMode; 28 @property (nonatomic) BOOL gymMode;
29 @property (nonatomic) BOOL beginMode; 29 @property (nonatomic) BOOL beginMode;
30 30
31 @property (nonatomic, strong) NSString * name; 31 @property (nonatomic, strong) NSString * name;
32 @property (nonatomic, strong) NSString * avatar; 32 @property (nonatomic, strong) NSString * avatar;
33 @property (nonatomic, strong) NSString * goal; 33 @property (nonatomic, strong) NSString * goal;
34 34
35 @property (nonatomic, strong) NSDate * createDate; 35 @property (nonatomic, strong) NSDate * createDate;
36 36
37 -(id) initWithShortData : (NSDictionary *) dict;
37 -(id) initWithData : (NSDictionary *) dict; 38 -(id) initWithData : (NSDictionary *) dict;
38 -(id) initWithData : (NSDictionary *) dict andGroupID : (int) groupID; 39 -(id) initWithData : (NSDictionary *) dict andGroupID : (int) groupID;
39 -(void) updateDate : (GroupObject *) obj; 40 -(void) updateDate : (GroupObject *) obj;
40 @end 41 @end
41 42
LifeLog/LifeLog/GroupObject.m
1 // 1 //
2 // GroupObject.m 2 // GroupObject.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 "GroupObject.h" 9 #import "GroupObject.h"
10 #import "Utilities.h" 10 #import "Utilities.h"
11 11
12 @implementation GroupObject 12 @implementation GroupObject
13
14 -(id) initWithShortData : (NSDictionary *) dict {
15 if([dict objectForKey:@"id"] != nil) {
16 self.groupID = [dict[@"id"] intValue];
17 }
18 if([dict objectForKey:@"group_name"] != nil) {
19 self.name = dict[@"group_name"];
20 }
21 return self;
22 }
23
13 -(id) initWithData : (NSDictionary *) dict { 24 -(id) initWithData : (NSDictionary *) dict {
14 if([dict objectForKey:@"group_id"] != nil) { 25 if([dict objectForKey:@"group_id"] != nil) {
15 self.groupID = [dict[@"group_id"] intValue]; 26 self.groupID = [dict[@"group_id"] intValue];
16 } 27 }
17 if([dict objectForKey:@"group_avatar"] != nil) { 28 if([dict objectForKey:@"group_avatar"] != nil) {
18 self.avatar = dict[@"group_avatar"]; 29 self.avatar = dict[@"group_avatar"];
19 } 30 }
20 if([dict objectForKey:@"created_at"] != nil && ![[dict objectForKey:@"created_at"] isKindOfClass:[NSNull class]]) { 31 if([dict objectForKey:@"created_at"] != nil && ![[dict objectForKey:@"created_at"] isKindOfClass:[NSNull class]]) {
21 NSString *dateString = dict[@"created_at"]; 32 NSString *dateString = dict[@"created_at"];
22 self.createDate = [Utilities dateFromString:dateString withFormat:@"yyyy-MM-dd hh:mm:ss"]; 33 self.createDate = [Utilities dateFromString:dateString withFormat:@"yyyy-MM-dd hh:mm:ss"];
23 } 34 }
24 else { 35 else {
25 self.createDate = [NSDate date]; 36 self.createDate = [NSDate date];
26 } 37 }
27 if([dict objectForKey:@"num_search"] != nil) { 38 if([dict objectForKey:@"num_search"] != nil) {
28 self.numSearch = [dict[@"num_search"] intValue]; 39 self.numSearch = [dict[@"num_search"] intValue];
29 } 40 }
30 [self parseData:dict]; 41 [self parseData:dict];
31 return self; 42 return self;
32 } 43 }
33 44
34 -(id) initWithData : (NSDictionary *) dict andGroupID : (int) groupID { 45 -(id) initWithData : (NSDictionary *) dict andGroupID : (int) groupID {
35 self.groupID = groupID; 46 self.groupID = groupID;
36 if([dict objectForKey:@"join_group"] != nil && ![[dict objectForKey:@"join_group"] isKindOfClass:[NSNull class]]) { 47 if([dict objectForKey:@"join_group"] != nil && ![[dict objectForKey:@"join_group"] isKindOfClass:[NSNull class]]) {
37 self.isJoin = [dict[@"join_group"] boolValue]; 48 self.isJoin = [dict[@"join_group"] boolValue];
38 } 49 }
39 if([dict objectForKey:@"goal"] != nil && ![[dict objectForKey:@"goal"] isKindOfClass:[NSNull class]]) { 50 if([dict objectForKey:@"goal"] != nil && ![[dict objectForKey:@"goal"] isKindOfClass:[NSNull class]]) {
40 self.goal = dict[@"goal"]; 51 self.goal = dict[@"goal"];
41 } 52 }
42 else { 53 else {
43 self.goal = @""; 54 self.goal = @"";
44 } 55 }
45 if([dict objectForKey:@"walk_mode_goal"] != nil && ![[dict objectForKey:@"walk_mode_goal"] isKindOfClass:[NSNull class]]) { 56 if([dict objectForKey:@"walk_mode_goal"] != nil && ![[dict objectForKey:@"walk_mode_goal"] isKindOfClass:[NSNull class]]) {
46 self.walkGoal = [dict[@"walk_mode_goal"] intValue]; 57 self.walkGoal = [dict[@"walk_mode_goal"] intValue];
47 } 58 }
48 if([dict objectForKey:@"run_mode_goal"] != nil && ![[dict objectForKey:@"run_mode_goal"] isKindOfClass:[NSNull class]]) { 59 if([dict objectForKey:@"run_mode_goal"] != nil && ![[dict objectForKey:@"run_mode_goal"] isKindOfClass:[NSNull class]]) {
49 self.runGoal = [dict[@"run_mode_goal"] intValue]; 60 self.runGoal = [dict[@"run_mode_goal"] intValue];
50 } 61 }
51 if([dict objectForKey:@"bike_mode_goal"] != nil && ![[dict objectForKey:@"bike_mode_goal"] isKindOfClass:[NSNull class]]) { 62 if([dict objectForKey:@"bike_mode_goal"] != nil && ![[dict objectForKey:@"bike_mode_goal"] isKindOfClass:[NSNull class]]) {
52 self.bikeGoal = [dict[@"bike_mode_goal"] intValue]; 63 self.bikeGoal = [dict[@"bike_mode_goal"] intValue];
53 } 64 }
54 if([dict objectForKey:@"step_mode_goal"] != nil && ![[dict objectForKey:@"step_mode_goal"] isKindOfClass:[NSNull class]]) { 65 if([dict objectForKey:@"step_mode_goal"] != nil && ![[dict objectForKey:@"step_mode_goal"] isKindOfClass:[NSNull class]]) {
55 self.stepGoal = [dict[@"step_mode_goal"] intValue]; 66 self.stepGoal = [dict[@"step_mode_goal"] intValue];
56 } 67 }
57 if([dict objectForKey:@"gym_mode_goal"] != nil && ![[dict objectForKey:@"gym_mode_goal"] isKindOfClass:[NSNull class]]) { 68 if([dict objectForKey:@"gym_mode_goal"] != nil && ![[dict objectForKey:@"gym_mode_goal"] isKindOfClass:[NSNull class]]) {
58 self.gymGoal = [dict[@"gym_mode_goal"] intValue]; 69 self.gymGoal = [dict[@"gym_mode_goal"] intValue];
59 } 70 }
60 if([dict objectForKey:@"beginer_mode_goal"] != nil && ![[dict objectForKey:@"beginer_mode_goal"] isKindOfClass:[NSNull class]]) { 71 if([dict objectForKey:@"beginer_mode_goal"] != nil && ![[dict objectForKey:@"beginer_mode_goal"] isKindOfClass:[NSNull class]]) {
61 self.beginGoal = [dict[@"beginer_mode_goal"] intValue]; 72 self.beginGoal = [dict[@"beginer_mode_goal"] intValue];
62 } 73 }
63 [self parseData:dict]; 74 [self parseData:dict];
64 return self; 75 return self;
65 } 76 }
66 77
67 -(void) parseData : (NSDictionary *) dict { 78 -(void) parseData : (NSDictionary *) dict {
68 if([dict objectForKey:@"group_name"] != nil) { 79 if([dict objectForKey:@"group_name"] != nil) {
69 self.name = dict[@"group_name"]; 80 self.name = dict[@"group_name"];
70 } 81 }
71 if([dict objectForKey:@"walk_mode_active"] != nil && ![[dict objectForKey:@"walk_mode_active"] isKindOfClass:[NSNull class]]) { 82 if([dict objectForKey:@"walk_mode_active"] != nil && ![[dict objectForKey:@"walk_mode_active"] isKindOfClass:[NSNull class]]) {
72 self.walkMode = [dict[@"walk_mode_active"] boolValue]; 83 self.walkMode = [dict[@"walk_mode_active"] boolValue];
73 } 84 }
74 if([dict objectForKey:@"run_mode_active"] != nil && ![[dict objectForKey:@"run_mode_active"] isKindOfClass:[NSNull class]]) { 85 if([dict objectForKey:@"run_mode_active"] != nil && ![[dict objectForKey:@"run_mode_active"] isKindOfClass:[NSNull class]]) {
75 self.runMode = [dict[@"run_mode_active"] boolValue]; 86 self.runMode = [dict[@"run_mode_active"] boolValue];
76 } 87 }
77 if([dict objectForKey:@"bike_mode_active"] != nil && ![[dict objectForKey:@"bike_mode_active"] isKindOfClass:[NSNull class]]) { 88 if([dict objectForKey:@"bike_mode_active"] != nil && ![[dict objectForKey:@"bike_mode_active"] isKindOfClass:[NSNull class]]) {
78 self.bikeMode = [dict[@"bike_mode_active"] boolValue]; 89 self.bikeMode = [dict[@"bike_mode_active"] boolValue];
79 } 90 }
80 if([dict objectForKey:@"step_mode_active"] != nil && ![[dict objectForKey:@"step_mode_active"] isKindOfClass:[NSNull class]]) { 91 if([dict objectForKey:@"step_mode_active"] != nil && ![[dict objectForKey:@"step_mode_active"] isKindOfClass:[NSNull class]]) {
81 self.stepMode = [dict[@"step_mode_active"] boolValue]; 92 self.stepMode = [dict[@"step_mode_active"] boolValue];
82 } 93 }
83 if([dict objectForKey:@"gym_mode_active"] != nil && ![[dict objectForKey:@"gym_mode_active"] isKindOfClass:[NSNull class]]) { 94 if([dict objectForKey:@"gym_mode_active"] != nil && ![[dict objectForKey:@"gym_mode_active"] isKindOfClass:[NSNull class]]) {
84 self.gymMode = [dict[@"gym_mode_active"] boolValue]; 95 self.gymMode = [dict[@"gym_mode_active"] boolValue];
85 } 96 }
86 if([dict objectForKey:@"beginer_mode_active"] != nil && ![[dict objectForKey:@"beginer_mode_active"] isKindOfClass:[NSNull class]]) { 97 if([dict objectForKey:@"beginer_mode_active"] != nil && ![[dict objectForKey:@"beginer_mode_active"] isKindOfClass:[NSNull class]]) {
87 self.beginMode = [dict[@"beginer_mode_active"] boolValue]; 98 self.beginMode = [dict[@"beginer_mode_active"] boolValue];
88 } 99 }
89 } 100 }
90 101
91 -(void) updateDate : (GroupObject *) obj { 102 -(void) updateDate : (GroupObject *) obj {
92 self.name = obj.name; 103 self.name = obj.name;
93 self.walkMode = obj.walkMode; 104 self.walkMode = obj.walkMode;
94 self.runMode = obj.runMode; 105 self.runMode = obj.runMode;
95 self.bikeMode = obj.bikeMode; 106 self.bikeMode = obj.bikeMode;
96 self.stepMode = obj.stepMode; 107 self.stepMode = obj.stepMode;
97 self.gymMode = obj.gymMode; 108 self.gymMode = obj.gymMode;
98 self.beginMode = obj.beginMode; 109 self.beginMode = obj.beginMode;
99 self.isJoin = obj.isJoin; 110 self.isJoin = obj.isJoin;
100 self.goal = obj.goal; 111 self.goal = obj.goal;
101 self.walkGoal = obj.walkGoal; 112 self.walkGoal = obj.walkGoal;
102 self.runGoal = obj.runGoal; 113 self.runGoal = obj.runGoal;
103 self.bikeGoal = obj.bikeGoal; 114 self.bikeGoal = obj.bikeGoal;
104 self.stepGoal = obj.stepGoal; 115 self.stepGoal = obj.stepGoal;
105 self.gymGoal = obj.gymGoal; 116 self.gymGoal = obj.gymGoal;
106 self.beginGoal = obj.beginGoal; 117 self.beginGoal = obj.beginGoal;
107 } 118 }
108 119
109 @end 120 @end
110 121
LifeLog/LifeLog/MyGroupViewController.h
File was created 1 //
2 // MyGroupViewController.h
3 // LifeLog
4 //
5 // Created by nvtu on 8/20/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import <UIKit/UIKit.h>
10 #import "BaseTableViewController.h"
11 #import "AutoTransButton.h"
12 #import "Entities.h"
13
14 @interface MyGroupViewController : BaseTableViewController {
15 NSMutableArray *_curListGrp;
16 GroupObject *_curGroup;
17 BOOL isMemberList;
18 }
19
20 @property (weak, nonatomic) IBOutlet UITableView *tableGrp;
21
22 @property (weak, nonatomic) IBOutlet UILabel *lblGroupName;
23 @property (weak, nonatomic) IBOutlet UILabel *lblActiveMode;
24 @property (weak, nonatomic) IBOutlet UILabel *lblGoal;
25 @property (weak, nonatomic) IBOutlet UIButton *btShowGrp;
26 @property (weak, nonatomic) IBOutlet AutoTransButton *btSwitch;
27
28 - (IBAction)clickBack:(id)sender;
29 - (IBAction)clickShowGrp:(id)sender;
30 - (IBAction)clickSwitch:(id)sender;
31
32 @end
33
LifeLog/LifeLog/MyGroupViewController.m
File was created 1 //
2 // MyGroupViewController.m
3 // LifeLog
4 //
5 // Created by nvtu on 8/20/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import "MyGroupViewController.h"
10 #import <SDWebImage/UIImageView+WebCache.h>
11
12 #import "Utilities.h"
13 #import "ServerAPI.h"
14 #import "SNSRecentTopicTableViewCell.h"
15
16 @interface MyGroupViewController ()
17
18 @end
19
20 @implementation MyGroupViewController
21
22 - (void)viewDidLoad {
23 [super viewDidLoad];
24 isMemberList = false;
25 _curListGrp = [[NSMutableArray alloc] init];
26 [self.tableBase registerNib:[UINib nibWithNibName:@"SNSRecentTopicTableViewCell" bundle:nil] forCellReuseIdentifier:@"RecentTopicCell"];
27
28 [self requestGroupList];
29 // Do any additional setup after loading the view from its nib.
30 }
31
32 - (void)didReceiveMemoryWarning {
33 [super didReceiveMemoryWarning];
34 // Dispose of any resources that can be recreated.
35 }
36
37 - (void)setupView {
38 if(_curGroup != nil) {
39 [self.lblGoal setText:_curGroup.goal];
40 NSString *mode = @"";
41 if(_curGroup.runMode) {
42 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.running", nil)];
43 mode = [mode stringByAppendingString:@"\n"];
44 }
45 if(_curGroup.walkMode) {
46 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.walking", nil)];
47 mode = [mode stringByAppendingString:@"\n"];
48 }
49 if(_curGroup.bikeMode) {
50 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.bike", nil)];
51 mode = [mode stringByAppendingString:@"\n"];
52 }
53 if(_curGroup.stepMode) {
54 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.step", nil)];
55 mode = [mode stringByAppendingString:@"\n"];
56 }
57 if(_curGroup.beginMode) {
58 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.begin", nil)];
59 mode = [mode stringByAppendingString:@"\n"];
60 }
61 if(_curGroup.gymMode) {
62 mode = [mode stringByAppendingString:NSLocalizedString(@"lifelog.grDetail.mode.gym", nil)];
63 mode = [mode stringByAppendingString:@"\n"];
64 }
65 NSRange range = [mode rangeOfString:@"\n" options:NSBackwardsSearch];
66 if(range.length > 0) {
67 mode = [mode stringByReplacingOccurrencesOfString:@"\n" withString:@"" options:NSBackwardsSearch range:range];
68 }
69 self.lblActiveMode.text = mode;
70 }
71 }
72
73 #pragma mark IBAction
74
75 - (IBAction)clickBack:(id)sender {
76 [self.navigationController popViewControllerAnimated:true];
77 }
78
79 - (IBAction)clickShowGrp:(id)sender {
80 self.tableGrp.hidden = !self.tableGrp.isHidden;
81 }
82
83 - (IBAction)clickSwitch:(id)sender {
84 isMemberList = !isMemberList;
85 if(isMemberList) {
86 [sender setTitle:NSLocalizedString(@"lifelog.grDetail.bt.viewTweet", nil) forState:UIControlStateNormal];
87 }
88 else {
89 [sender setTitle:NSLocalizedString(@"lifelog.grDetail.bt.viewMem", nil) forState:UIControlStateNormal];
90 }
91 [sender setUserInteractionEnabled:false];
92 [self resetData];
93 }
94
95 #pragma mark UITableView Delegate
96 -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
97 if(tableView == self.tableGrp)
98 return 1;
99 else
100 return [super numberOfSectionsInTableView:tableView];
101 }
102
103 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
104 if(tableView == self.tableGrp)
105 return _curListGrp.count;
106 else
107 return [super tableView:tableView numberOfRowsInSection:section];
108 }
109
110 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
111 if(tableView == self.tableGrp) {
112 UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"GroupCell"];
113 if(cell == nil) {
114 cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"GroupCell"];
115 }
116 GroupObject *object = [_curListGrp objectAtIndex:indexPath.row];
117 cell.textLabel.text = object.name;
118 return cell;
119 }
120 else {
121 SNSRecentTopicTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RecentTopicCell"];
122 if(isMemberList) {
123 MemberObject *object = [_curDataList objectAtIndex:indexPath.row];
124 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
125 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
126 }
127 else {
128 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
129 }
130 cell.lblUsername.text = @"";
131 cell.lblDateTime.text = @"";
132 cell.lblDes.text = object.userName;
133 cell.lblMode.text = @"";
134 cell.lblDistance.text = @"";
135 cell.lblDuration.text = @"";
136 }
137 else {
138 TweetObject *object = [_curDataList objectAtIndex:indexPath.row];
139 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
140 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
141 }
142 else {
143 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
144 }
145 cell.lblDateTime.text = [Utilities stringFromDate:object.createDate withFormat:@"YYYY/MM/dd hh:mm"];
146 cell.lblUsername.text = object.userName;
147 cell.lblDes.text = object.content;
148 cell.lblMode.text = object.mode;
149 cell.lblDistance.text = [NSString stringWithFormat:@"%.0f m", object.distance];
150 cell.lblDuration.text = object.time;
151 }
152 return cell;
153 }
154 }
155
156 - (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
157 if(tableView == self.tableGrp) {
158 return;
159 }
160 [super tableView:tableView willDisplayCell:cell forRowAtIndexPath:indexPath];
161 }
162
163 -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
164 if(tableView == self.tableGrp) {
165 [tableView setHidden:true];
166 [self resetGroupData:indexPath.row];
167 }
168 }
169
170 #pragma mark Private Function
171
172 - (void) resetGroupData : (int) index {
173 _curGroup = [_curListGrp objectAtIndex:index];
174 self.lblGroupName.text = _curGroup.name;
175 [_curDataList removeAllObjects];
176 [self.tableBase reloadData];
177 [self requestGroupDetail];
178 }
179
180 - (void) requestGroupList {
181 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
182 MBProgressHUD *hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
183 [[ServerAPI server] requestGroupList:token CompletionHandler:^(NSArray *array, NSError *error) {
184 if(error == nil) {
185 [_curListGrp removeAllObjects];
186 [_curListGrp addObjectsFromArray:array];
187 MyGroupViewController __weak *weakSelf = self;
188 dispatch_async(dispatch_get_main_queue(), ^{
189 [hudView hideAnimated:true];
190 [self.tableGrp reloadData];
191 if(_curListGrp.count > 0) {
192 [weakSelf resetGroupData:0];
193 }
194 else {
195 weakSelf.lblGroupName.text = @"No Group";
196 }
197 [weakSelf.btShowGrp setEnabled:(_curListGrp.count > 0)];
198 });
199 }
200 }];
201 }
202
203 - (void) requestGroupDetail {
204 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
205 MBProgressHUD *hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
206 [[ServerAPI server] getGroupDetail:token withGroupID:_curGroup.groupID CompletionHandler:^(GroupObject *object, NSError *error) {
207 MyGroupViewController __weak *weakSelf = self;
208 [_curGroup updateDate:object];
209 dispatch_async(dispatch_get_main_queue(), ^{
210 [hudView hideAnimated:true];
211 [weakSelf setupView];
212 [weakSelf callRequestToUpdateData];
213 });
214 }];
215 }
216
217 -(void) callRequestToUpdateData {
218 [super callRequestToUpdateData];
219
220 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
221 MBProgressHUD *hudView = nil;
222 if(_curPage == 1 && !self.refreshControl.isRefreshing) {
223 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
224 }
225 if(isMemberList) {
226 [[ServerAPI server] requestMemberList:token groupID:_curGroup.groupID withPage:_curPage CompletionHandler:^(NSArray *array, NSError *error){
227 dispatch_async(dispatch_get_main_queue(), ^{
228 if(hudView != nil) {
229 [hudView hideAnimated:true];
230 }
231 });
232 MyGroupViewController __weak *weakSelf = self;
233 [weakSelf updateTableData:array error:error];
234 [weakSelf.btSwitch setUserInteractionEnabled:true];
235 }];
236 }
237 else {
238 [[ServerAPI server] requestTweetsList:token groupID:_curGroup.groupID withPage:_curPage CompletionHandler:^(NSArray *array, NSError *error){
239 dispatch_async(dispatch_get_main_queue(), ^{
240 if(hudView != nil) {
241 [hudView hideAnimated:true];
242 }
243 });
244 MyGroupViewController __weak *weakSelf = self;
245 [weakSelf updateTableData:array error:error];
246 [weakSelf.btSwitch setUserInteractionEnabled:true];
247 }];
248 }
249 }
250
251 @end
252
LifeLog/LifeLog/MyGroupViewController.xib
File was created 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">
3 <device id="retina4_7" orientation="portrait">
4 <adaptation id="fullscreen"/>
5 </device>
6 <dependencies>
7 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
8 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
9 </dependencies>
10 <objects>
11 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MyGroupViewController">
12 <connections>
13 <outlet property="btShowGrp" destination="MvK-5R-njL" id="bcb-N7-jbu"/>
14 <outlet property="btSwitch" destination="eBu-7L-nsx" id="od6-v0-6eh"/>
15 <outlet property="lblActiveMode" destination="P1r-ft-imP" id="WRV-YQ-1IY"/>
16 <outlet property="lblGoal" destination="ftA-wa-19F" id="Ziv-cg-at5"/>
17 <outlet property="lblGroupName" destination="xXv-SO-m4h" id="yGe-lh-RC3"/>
18 <outlet property="tableBase" destination="ubS-v9-zCa" id="gea-9H-gpI"/>
19 <outlet property="tableGrp" destination="dtD-J5-dze" id="ahq-Cd-85X"/>
20 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
21 </connections>
22 </placeholder>
23 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
24 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
25 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
26 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
27 <subviews>
28 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vxT-xe-7mV" userLabel="ViewHeader">
29 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
30 <subviews>
31 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SNS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Txe-1I-61m" customClass="AutoTransLabel">
32 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
33 <fontDescription key="fontDescription" type="system" pointSize="17"/>
34 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
35 <nil key="highlightedColor"/>
36 <userDefinedRuntimeAttributes>
37 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.grDetail.title"/>
38 </userDefinedRuntimeAttributes>
39 </label>
40 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DjI-qB-WTG">
41 <rect key="frame" x="0.0" y="5" width="70" height="36"/>
42 <constraints>
43 <constraint firstAttribute="width" constant="70" id="Q1G-tI-sgx"/>
44 </constraints>
45 <state key="normal" image="today_back_button"/>
46 <connections>
47 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="93y-uZ-J2W"/>
48 </connections>
49 </button>
50 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7gh-nf-sKZ">
51 <rect key="frame" x="330" y="0.0" width="45" height="46"/>
52 <constraints>
53 <constraint firstAttribute="width" constant="45" id="Vw3-60-kvV"/>
54 </constraints>
55 <state key="normal" image="icon_menu"/>
56 </button>
57 </subviews>
58 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
59 <constraints>
60 <constraint firstAttribute="trailing" secondItem="7gh-nf-sKZ" secondAttribute="trailing" id="2JD-YU-WS2"/>
61 <constraint firstItem="Txe-1I-61m" firstAttribute="leading" secondItem="vxT-xe-7mV" secondAttribute="leading" id="30c-J3-6ba"/>
62 <constraint firstAttribute="bottom" secondItem="7gh-nf-sKZ" secondAttribute="bottom" id="61g-Gv-ka0"/>
63 <constraint firstAttribute="bottom" secondItem="Txe-1I-61m" secondAttribute="bottom" id="BZZ-wj-MGj"/>
64 <constraint firstItem="7gh-nf-sKZ" firstAttribute="top" secondItem="vxT-xe-7mV" secondAttribute="top" id="DKT-Ea-U3k"/>
65 <constraint firstAttribute="trailing" secondItem="Txe-1I-61m" secondAttribute="trailing" id="WA1-1W-49C"/>
66 <constraint firstItem="DjI-qB-WTG" firstAttribute="leading" secondItem="vxT-xe-7mV" secondAttribute="leading" id="tA3-JF-Kjj"/>
67 <constraint firstAttribute="bottom" secondItem="DjI-qB-WTG" secondAttribute="bottom" constant="5" id="uFc-I1-M2c"/>
68 <constraint firstItem="Txe-1I-61m" firstAttribute="top" secondItem="vxT-xe-7mV" secondAttribute="top" id="ucO-rK-wAV"/>
69 <constraint firstItem="DjI-qB-WTG" firstAttribute="top" secondItem="vxT-xe-7mV" secondAttribute="top" constant="5" id="vR3-xv-3hD"/>
70 <constraint firstAttribute="height" constant="46" id="yIJ-Mu-bPA"/>
71 </constraints>
72 </view>
73 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hhh-nO-yn5">
74 <rect key="frame" x="15" y="54" width="345" height="36"/>
75 <subviews>
76 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MvK-5R-njL">
77 <rect key="frame" x="289" y="0.0" width="56" height="36"/>
78 <constraints>
79 <constraint firstAttribute="width" constant="56" id="l8Q-On-RNy"/>
80 </constraints>
81 <state key="normal" backgroundImage="arrow_down"/>
82 <connections>
83 <action selector="clickShowGrp:" destination="-1" eventType="touchUpInside" id="yfd-Yu-fTF"/>
84 </connections>
85 </button>
86 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xXv-SO-m4h">
87 <rect key="frame" x="5" y="0.0" width="284" height="36"/>
88 <fontDescription key="fontDescription" type="system" pointSize="16"/>
89 <nil key="textColor"/>
90 <nil key="highlightedColor"/>
91 </label>
92 </subviews>
93 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
94 <constraints>
95 <constraint firstAttribute="trailing" secondItem="MvK-5R-njL" secondAttribute="trailing" id="IS8-5J-ypb"/>
96 <constraint firstAttribute="bottom" secondItem="MvK-5R-njL" secondAttribute="bottom" id="IVS-f9-RjH"/>
97 <constraint firstAttribute="bottom" secondItem="xXv-SO-m4h" secondAttribute="bottom" id="Ino-7v-CKz"/>
98 <constraint firstItem="MvK-5R-njL" firstAttribute="top" secondItem="hhh-nO-yn5" secondAttribute="top" id="NlH-tz-ByC"/>
99 <constraint firstAttribute="height" constant="36" id="O8T-vH-tg6"/>
100 <constraint firstItem="MvK-5R-njL" firstAttribute="leading" secondItem="xXv-SO-m4h" secondAttribute="trailing" id="V51-fg-KCf"/>
101 <constraint firstItem="xXv-SO-m4h" firstAttribute="leading" secondItem="hhh-nO-yn5" secondAttribute="leading" constant="5" id="eY6-uq-qWx"/>
102 <constraint firstItem="xXv-SO-m4h" firstAttribute="top" secondItem="hhh-nO-yn5" secondAttribute="top" id="l3a-Th-4Kb"/>
103 </constraints>
104 <userDefinedRuntimeAttributes>
105 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
106 <integer key="value" value="5"/>
107 </userDefinedRuntimeAttribute>
108 </userDefinedRuntimeAttributes>
109 </view>
110 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SNe-1B-nwV">
111 <rect key="frame" x="15" y="105" width="345" height="105"/>
112 <subviews>
113 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ใ‚ฐใƒซใƒผใƒ— VMAP ใ‚ขใƒกใƒชใ‚ซใƒซใƒผใƒˆ๏ผ–๏ผ‘ๅฎŒ่ตฐ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hyY-rU-WJx">
114 <rect key="frame" x="8" y="8" width="329" height="20"/>
115 <constraints>
116 <constraint firstAttribute="height" constant="20" id="dx4-Lw-gRP"/>
117 </constraints>
118 <fontDescription key="fontDescription" type="system" pointSize="15"/>
119 <nil key="textColor"/>
120 <nil key="highlightedColor"/>
121 </label>
122 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P1r-ft-imP">
123 <rect key="frame" x="8" y="36" width="155" height="61"/>
124 <constraints>
125 <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="61" id="6m3-4u-yjQ"/>
126 <constraint firstAttribute="width" constant="155" id="bJa-4P-B84"/>
127 </constraints>
128 <fontDescription key="fontDescription" type="system" pointSize="15"/>
129 <nil key="textColor"/>
130 <nil key="highlightedColor"/>
131 </label>
132 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fXA-Zh-ABB" customClass="AutoTransButton">
133 <rect key="frame" x="171" y="67" width="166" height="30"/>
134 <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
135 <constraints>
136 <constraint firstAttribute="height" constant="30" id="4bu-TU-hhR"/>
137 <constraint firstAttribute="width" constant="166" id="hcm-Nd-TE4"/>
138 </constraints>
139 <state key="normal" title="VMAP">
140 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
141 </state>
142 <userDefinedRuntimeAttributes>
143 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
144 <integer key="value" value="10"/>
145 </userDefinedRuntimeAttribute>
146 </userDefinedRuntimeAttributes>
147 </button>
148 </subviews>
149 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
150 <constraints>
151 <constraint firstItem="P1r-ft-imP" firstAttribute="leading" secondItem="SNe-1B-nwV" secondAttribute="leading" constant="8" id="PCO-gJ-aUC"/>
152 <constraint firstItem="P1r-ft-imP" firstAttribute="top" secondItem="hyY-rU-WJx" secondAttribute="bottom" constant="8" id="TFE-rm-YuC"/>
153 <constraint firstItem="hyY-rU-WJx" firstAttribute="leading" secondItem="SNe-1B-nwV" secondAttribute="leading" constant="8" id="Urc-sV-0AF"/>
154 <constraint firstAttribute="bottom" secondItem="P1r-ft-imP" secondAttribute="bottom" constant="8" id="YYl-bN-XH2"/>
155 <constraint firstItem="hyY-rU-WJx" firstAttribute="top" secondItem="SNe-1B-nwV" secondAttribute="top" constant="8" id="a68-ja-X4x"/>
156 <constraint firstAttribute="trailing" secondItem="fXA-Zh-ABB" secondAttribute="trailing" constant="8" id="hNz-cE-JQc"/>
157 <constraint firstAttribute="trailing" secondItem="hyY-rU-WJx" secondAttribute="trailing" constant="8" id="tHp-Xw-Emj"/>
158 <constraint firstAttribute="bottom" secondItem="fXA-Zh-ABB" secondAttribute="bottom" constant="8" id="vRs-Al-kct"/>
159 </constraints>
160 </view>
161 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ftA-wa-19F">
162 <rect key="frame" x="15" y="218" width="345" height="100"/>
163 <constraints>
164 <constraint firstAttribute="height" constant="100" id="sns-tn-c0d"/>
165 </constraints>
166 <fontDescription key="fontDescription" type="system" pointSize="17"/>
167 <nil key="textColor"/>
168 <nil key="highlightedColor"/>
169 </label>
170 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eBu-7L-nsx" customClass="AutoTransButton">
171 <rect key="frame" x="194" y="328" width="166" height="30"/>
172 <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
173 <constraints>
174 <constraint firstAttribute="width" constant="166" id="Rrn-lf-raV"/>
175 <constraint firstAttribute="height" constant="30" id="y2E-RH-aan"/>
176 </constraints>
177 <state key="normal" title="ใƒกใƒณใƒใƒผ">
178 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
179 </state>
180 <userDefinedRuntimeAttributes>
181 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
182 <integer key="value" value="10"/>
183 </userDefinedRuntimeAttribute>
184 </userDefinedRuntimeAttributes>
185 <connections>
186 <action selector="clickSwitch:" destination="-1" eventType="touchUpInside" id="B7a-Hl-IlY"/>
187 </connections>
188 </button>
189 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="100" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="ubS-v9-zCa">
190 <rect key="frame" x="0.0" y="373" width="375" height="244"/>
191 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
192 <connections>
193 <outlet property="dataSource" destination="-1" id="HIG-w5-mXN"/>
194 <outlet property="delegate" destination="-1" id="GIa-bX-Av9"/>
195 </connections>
196 </tableView>
197 <tableView hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="35" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="dtD-J5-dze">
198 <rect key="frame" x="15" y="91" width="345" height="140"/>
199 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
200 <constraints>
201 <constraint firstAttribute="height" constant="140" id="CrG-Ni-f6b"/>
202 </constraints>
203 <connections>
204 <outlet property="dataSource" destination="-1" id="2bH-mm-vKH"/>
205 <outlet property="delegate" destination="-1" id="9tr-mh-5Ir"/>
206 </connections>
207 </tableView>
208 </subviews>
209 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
210 <constraints>
211 <constraint firstItem="ftA-wa-19F" firstAttribute="top" secondItem="SNe-1B-nwV" secondAttribute="bottom" constant="8" id="4iN-BW-Eaa"/>
212 <constraint firstItem="vxT-xe-7mV" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="5np-jI-7iK"/>
213 <constraint firstAttribute="trailing" secondItem="eBu-7L-nsx" secondAttribute="trailing" constant="15" id="AkN-Cv-ULu"/>
214 <constraint firstItem="SNe-1B-nwV" firstAttribute="top" secondItem="hhh-nO-yn5" secondAttribute="bottom" constant="15" id="BL0-Cv-jlz"/>
215 <constraint firstItem="ubS-v9-zCa" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="Dt8-xl-lI8"/>
216 <constraint firstAttribute="trailing" secondItem="SNe-1B-nwV" secondAttribute="trailing" constant="15" id="QiL-ts-ryc"/>
217 <constraint firstItem="dtD-J5-dze" firstAttribute="top" secondItem="hhh-nO-yn5" secondAttribute="bottom" constant="1" id="QzJ-aS-NQ0"/>
218 <constraint firstItem="SNe-1B-nwV" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="T4b-fq-Gc8"/>
219 <constraint firstAttribute="trailing" secondItem="hhh-nO-yn5" secondAttribute="trailing" constant="15" id="YB3-2b-4yx"/>
220 <constraint firstAttribute="bottom" secondItem="ubS-v9-zCa" secondAttribute="bottom" constant="50" id="ZNH-0B-rWz"/>
221 <constraint firstItem="ftA-wa-19F" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="bnx-K2-jVS"/>
222 <constraint firstAttribute="trailing" secondItem="ubS-v9-zCa" secondAttribute="trailing" id="bsK-wi-RYU"/>
223 <constraint firstAttribute="trailing" secondItem="vxT-xe-7mV" secondAttribute="trailing" id="eld-fc-V95"/>
224 <constraint firstItem="hhh-nO-yn5" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="gDN-Hr-2vm"/>
225 <constraint firstItem="vxT-xe-7mV" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="iBy-99-6Ky"/>
226 <constraint firstItem="dtD-J5-dze" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="ie5-ll-WkY"/>
227 <constraint firstAttribute="trailing" secondItem="ftA-wa-19F" secondAttribute="trailing" constant="15" id="jaz-L9-glj"/>
228 <constraint firstItem="eBu-7L-nsx" firstAttribute="top" secondItem="ftA-wa-19F" secondAttribute="bottom" constant="10" id="lF2-iL-Xa6"/>
229 <constraint firstItem="ubS-v9-zCa" firstAttribute="top" secondItem="eBu-7L-nsx" secondAttribute="bottom" constant="15" id="ofF-9P-pq9"/>
230 <constraint firstItem="hhh-nO-yn5" firstAttribute="top" secondItem="vxT-xe-7mV" secondAttribute="bottom" constant="8" id="qIL-RX-3zl"/>
231 <constraint firstAttribute="trailing" secondItem="dtD-J5-dze" secondAttribute="trailing" constant="15" id="uHa-ot-bT0"/>
232 </constraints>
233 <point key="canvasLocation" x="24.5" y="52.5"/>
234 </view>
235 </objects>
236 <resources>
237 <image name="arrow_down" width="28" height="18"/>
238 <image name="icon_menu" width="30" height="30"/>
239 <image name="today_back_button" width="73" height="37"/>
240 </resources>
241 </document>
242
LifeLog/LifeLog/SNSViewController.m
1 // 1 //
2 // SNSViewController.m 2 // SNSViewController.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 "SNSViewController.h" 9 #import "SNSViewController.h"
10 10
11 #import <SDWebImage/UIImageView+WebCache.h> 11 #import <SDWebImage/UIImageView+WebCache.h>
12 12
13 #import "ServerAPI.h" 13 #import "ServerAPI.h"
14 #import "Utilities.h" 14 #import "Utilities.h"
15 15
16 #import "SNSRecentTopicTableViewCell.h" 16 #import "SNSRecentTopicTableViewCell.h"
17 #import "MyGroupViewController.h"
17 #import "SearchGroupViewController.h" 18 #import "SearchGroupViewController.h"
18 #import "GroupDetailViewController.h" 19 #import "GroupDetailViewController.h"
19 20
20 @interface SNSViewController () 21 @interface SNSViewController ()
21 22
22 @end 23 @end
23 24
24 @implementation SNSViewController 25 @implementation SNSViewController
25 26
26 - (void)viewDidLoad { 27 - (void)viewDidLoad {
27 [super viewDidLoad]; 28 [super viewDidLoad];
28 // Do any additional setup after loading the view from its nib. 29 // Do any additional setup after loading the view from its nib.
29 self.title = NSLocalizedString(@"lifelog.tapbar.sns", nil); 30 self.title = NSLocalizedString(@"lifelog.tapbar.sns", nil);
30 31
31 [self callRequestToUpdateData]; 32 [self callRequestToUpdateData];
32 33
33 //register nib for table view 34 //register nib for table view
34 [self.tableBase registerNib:[UINib nibWithNibName:@"SNSRecentTopicTableViewCell" bundle:nil] forCellReuseIdentifier:@"RecentTopicCell"]; 35 [self.tableBase registerNib:[UINib nibWithNibName:@"SNSRecentTopicTableViewCell" bundle:nil] forCellReuseIdentifier:@"RecentTopicCell"];
35 } 36 }
36 37
37 - (void)didReceiveMemoryWarning { 38 - (void)didReceiveMemoryWarning {
38 [super didReceiveMemoryWarning]; 39 [super didReceiveMemoryWarning];
39 // Dispose of any resources that can be recreated. 40 // Dispose of any resources that can be recreated.
40 } 41 }
41 42
42 #pragma mark IBAction 43 #pragma mark IBAction
43 - (IBAction)clickRecommendGroup:(id)sender { 44 - (IBAction)clickRecommendGroup:(id)sender {
44 SearchGroupViewController * search = [[SearchGroupViewController alloc] init]; 45 SearchGroupViewController * search = [[SearchGroupViewController alloc] init];
45 [self.navigationController pushViewController:search animated:true]; 46 [self.navigationController pushViewController:search animated:true];
46 } 47 }
47 48
48 - (IBAction)clickMyGroup:(id)sender { 49 - (IBAction)clickMyGroup:(id)sender {
49 // GroupDetailViewController * detail = [[GroupDetailViewController alloc] init]; 50 MyGroupViewController * myGrp = [[MyGroupViewController alloc] init];
50 // [self.navigationController pushViewController:detail animated:true]; 51 [self.navigationController pushViewController:myGrp animated:true];
51 } 52 }
52 53
53 #pragma mark UITableView Delegate 54 #pragma mark UITableView Delegate
54 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 55 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
55 SNSRecentTopicTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RecentTopicCell"]; 56 SNSRecentTopicTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"RecentTopicCell"];
56 TweetObject *object = [_curDataList objectAtIndex:indexPath.row]; 57 TweetObject *object = [_curDataList objectAtIndex:indexPath.row];
57 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) { 58 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
58 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]]; 59 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
59 } 60 }
60 else { 61 else {
61 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]]; 62 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
62 } 63 }
63 cell.lblDateTime.text = [Utilities stringFromDate:object.createDate withFormat:@"YYYY/MM/dd hh:mm"]; 64 cell.lblDateTime.text = [Utilities stringFromDate:object.createDate withFormat:@"YYYY/MM/dd hh:mm"];
64 cell.lblUsername.text = object.userName; 65 cell.lblUsername.text = object.userName;
65 cell.lblDes.text = object.content; 66 cell.lblDes.text = object.content;
66 cell.lblMode.text = object.mode; 67 cell.lblMode.text = object.mode;
67 cell.lblDistance.text = [NSString stringWithFormat:@"%.0f m", object.distance]; 68 cell.lblDistance.text = [NSString stringWithFormat:@"%.0f m", object.distance];
68 cell.lblDuration.text = object.time; 69 cell.lblDuration.text = object.time;
69 return cell; 70 return cell;
70 } 71 }
71 72
72 #pragma mark Private Function 73 #pragma mark Private Function
73 74
74 -(void) callRequestToUpdateData { 75 -(void) callRequestToUpdateData {
75 [super callRequestToUpdateData]; 76 [super callRequestToUpdateData];
76 77
77 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 78 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
78 MBProgressHUD *hudView = nil; 79 MBProgressHUD *hudView = nil;
79 if(_curPage == 1 && !self.refreshControl.isRefreshing) { 80 if(_curPage == 1 && !self.refreshControl.isRefreshing) {
80 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true]; 81 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
81 } 82 }
82 [[ServerAPI server] requestTweetsList:token groupID:-1 withPage:_curPage CompletionHandler:^(NSArray *array, NSError *error){ 83 [[ServerAPI server] requestTweetsList:token groupID:-1 withPage:_curPage CompletionHandler:^(NSArray *array, NSError *error){
83 dispatch_async(dispatch_get_main_queue(), ^{ 84 dispatch_async(dispatch_get_main_queue(), ^{
84 if(hudView != nil) { 85 if(hudView != nil) {
85 [hudView hideAnimated:true]; 86 [hudView hideAnimated:true];
86 } 87 }
87 }); 88 });
88 SNSViewController __weak *weakSelf = self; 89 SNSViewController __weak *weakSelf = self;
89 [weakSelf updateTableData:array error:error]; 90 [weakSelf updateTableData:array error:error];
90 }]; 91 }];
91 } 92 }
92 93
93 @end 94 @end
94 95
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 atDate:(NSDate *)date withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryObject *, NSError *)) completion; 33 - (void) requestHistory:(NSString *)token atDate:(NSDate *)date withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryObject *, NSError *)) completion;
34 - (void) requestHistoryGraph:(NSString *)token withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryGraphObject *, NSError *)) completion; 34 - (void) requestHistoryGraph:(NSString *)token withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryGraphObject *, NSError *)) completion;
35 - (void) requestHistoryList:(NSString *)token withType:(int)type andMode:(int) mode AtPage:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 35 - (void) requestHistoryList:(NSString *)token withType:(int)type andMode:(int) mode AtPage:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
36 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion; 36 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion;
37 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion; 37 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion;
38 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
38 39
39 #pragma mark - SNS Screen Function 40 #pragma mark - SNS Screen Function
40 /* 41 /*
41 Get tweet of group and get recent tweet is same API 42 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 43 If groupID equal -1, it will request recent tweet. Otherwise will request tweet of group
43 */ 44 */
44 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 45 - (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; 46 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
46 47
47 #pragma mark - Group Function 48 #pragma mark - Group Function
48 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion; 49 - (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; 50 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
50 51
51 #pragma mark - Common API 52 #pragma mark - Common API
52 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion; 53 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion;
53 @end 54 @end
54 55
LifeLog/LifeLog/ServerAPI.m
1 // 1 //
2 // ServerAPI.m 2 // ServerAPI.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by Nguyen Van Phong on 7/30/17. 5 // Created by Nguyen Van Phong on 7/30/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "ServerAPI.h" 9 #import "ServerAPI.h"
10 10
11 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/"; 11 NSString *const kServerAddress = @"http://clover.timesfun.jp:9001/";
12 NSString *const kUser = @"KEY_USER"; 12 NSString *const kUser = @"KEY_USER";
13 NSString *const kToken = @"KEY_TOKEN"; 13 NSString *const kToken = @"KEY_TOKEN";
14 NSString *const kNotificationToken = @"TOKEN_INVALID"; 14 NSString *const kNotificationToken = @"TOKEN_INVALID";
15 15
16 @implementation NSString (NSString_Extended) 16 @implementation NSString (NSString_Extended)
17 - (NSString *)urlencode { 17 - (NSString *)urlencode {
18 NSMutableString *output = [NSMutableString string]; 18 NSMutableString *output = [NSMutableString string];
19 const unsigned char *source = (const unsigned char *)[self UTF8String]; 19 const unsigned char *source = (const unsigned char *)[self UTF8String];
20 int sourceLen = (int)strlen((const char *)source); 20 int sourceLen = (int)strlen((const char *)source);
21 for (int i = 0; i < sourceLen; ++i) { 21 for (int i = 0; i < sourceLen; ++i) {
22 const unsigned char thisChar = source[i]; 22 const unsigned char thisChar = source[i];
23 if (thisChar == ' '){ 23 if (thisChar == ' '){
24 [output appendString:@"+"]; 24 [output appendString:@"+"];
25 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' || 25 } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||
26 (thisChar >= 'a' && thisChar <= 'z') || 26 (thisChar >= 'a' && thisChar <= 'z') ||
27 (thisChar >= 'A' && thisChar <= 'Z') || 27 (thisChar >= 'A' && thisChar <= 'Z') ||
28 (thisChar >= '0' && thisChar <= '9')) { 28 (thisChar >= '0' && thisChar <= '9')) {
29 [output appendFormat:@"%c", thisChar]; 29 [output appendFormat:@"%c", thisChar];
30 } else { 30 } else {
31 [output appendFormat:@"%%%02X", thisChar]; 31 [output appendFormat:@"%%%02X", thisChar];
32 } 32 }
33 } 33 }
34 return output; 34 return output;
35 } 35 }
36 @end 36 @end
37 37
38 @implementation ServerAPI 38 @implementation ServerAPI
39 static ServerAPI *_server = nil; 39 static ServerAPI *_server = nil;
40 40
41 NSURLSessionDataTask * searchTask; 41 NSURLSessionDataTask * searchTask;
42 42
43 @synthesize timeOutInterval = _timeOutInterval; 43 @synthesize timeOutInterval = _timeOutInterval;
44 44
45 + (instancetype)server 45 + (instancetype)server
46 { 46 {
47 @synchronized(self) { 47 @synchronized(self) {
48 if (_server == nil) { 48 if (_server == nil) {
49 _server = [[ServerAPI alloc] init]; 49 _server = [[ServerAPI alloc] init];
50 } 50 }
51 } 51 }
52 return _server; 52 return _server;
53 } 53 }
54 54
55 - (instancetype)init 55 - (instancetype)init
56 { 56 {
57 self = [super init]; 57 self = [super init];
58 if (self != nil) { 58 if (self != nil) {
59 self.timeOutInterval = 150; 59 self.timeOutInterval = 150;
60 } 60 }
61 return self; 61 return self;
62 } 62 }
63 63
64 #pragma mark - Login and Register 64 #pragma mark - Login and Register
65 // Login 65 // Login
66 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion 66 - (void)loginWithEmail:(NSString *)email Password:(NSString *)password CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion
67 { 67 {
68 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" token:@"" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) { 68 [self _request:[kServerAddress stringByAppendingFormat: @"login"] method:@"POST" token:@"" paras:@{@"email":email, @"password": password} completion:^(NSData *data, NSError *error) {
69 69
70 if (completion == NULL) { 70 if (completion == NULL) {
71 return ; 71 return ;
72 } 72 }
73 73
74 if (error == nil) 74 if (error == nil)
75 { 75 {
76 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 76 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
77 77
78 int status = [dataResult[@"status"] intValue]; 78 int status = [dataResult[@"status"] intValue];
79 if (status == 1) { // status = 1 success 79 if (status == 1) { // status = 1 success
80 NSString *token = dataResult[@"result"][@"token"]; 80 NSString *token = dataResult[@"result"][@"token"];
81 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 81 NSDictionary *dictUser = dataResult[@"result"][@"user"];
82 User *user = [[User alloc] init]; 82 User *user = [[User alloc] init];
83 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 83 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
84 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 84 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
85 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 85 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
86 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 86 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
87 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 87 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
88 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 88 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
89 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 89 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
90 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 90 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
91 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 91 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
92 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 92 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
93 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 93 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
94 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 94 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
95 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]]; 95 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]];
96 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]]; 96 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]];
97 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]]; 97 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]];
98 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]]; 98 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]];
99 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue]; 99 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue];
100 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue]; 100 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue];
101 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue]; 101 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue];
102 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue]; 102 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue];
103 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue]; 103 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue];
104 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue]; 104 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue];
105 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue]; 105 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue];
106 completion(user, token, nil); 106 completion(user, token, nil);
107 } 107 }
108 else { // status = 0 error 108 else { // status = 0 error
109 NSString *message = dataResult[@"message"]; 109 NSString *message = dataResult[@"message"];
110 if (message == nil) { 110 if (message == nil) {
111 message = @"Unknown error"; 111 message = @"Unknown error";
112 } 112 }
113 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 113 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
114 completion(nil, nil, loginFaild); 114 completion(nil, nil, loginFaild);
115 } 115 }
116 } 116 }
117 else 117 else
118 { 118 {
119 completion(nil, nil, error); 119 completion(nil, nil, error);
120 } 120 }
121 }]; 121 }];
122 } 122 }
123 123
124 // Register 124 // Register
125 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion { 125 - (void)registerUserWithParams:(NSDictionary *)params CompletionHandler: (void (^)(User *, NSString *, NSError *)) completion {
126 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" token:@"" paras:params completion:^(NSData *data, NSError *error) { 126 [self _request:[kServerAddress stringByAppendingFormat: @"register"] method:@"POST" token:@"" paras:params completion:^(NSData *data, NSError *error) {
127 127
128 if (completion == NULL) { 128 if (completion == NULL) {
129 return ; 129 return ;
130 } 130 }
131 131
132 if (error == nil) 132 if (error == nil)
133 { 133 {
134 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 134 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
135 135
136 int status = [dataResult[@"status"] intValue]; 136 int status = [dataResult[@"status"] intValue];
137 if (status == 1) { // status = 1 success 137 if (status == 1) { // status = 1 success
138 NSString *token = dataResult[@"result"][@"token"]; 138 NSString *token = dataResult[@"result"][@"token"];
139 NSDictionary *dictUser = dataResult[@"result"][@"user"]; 139 NSDictionary *dictUser = dataResult[@"result"][@"user"];
140 User *user = [[User alloc] init]; 140 User *user = [[User alloc] init];
141 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]]; 141 user.user_id = [NSString stringWithFormat:@"%@",dictUser[@"id"]];
142 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]]; 142 user.username = [NSString stringWithFormat:@"%@",dictUser[@"username"]];
143 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]]; 143 user.full_name = [NSString stringWithFormat:@"%@",dictUser[@"full_name"]];
144 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]]; 144 user.nickname = [NSString stringWithFormat:@"%@",dictUser[@"nickname"]];
145 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]]; 145 user.email = [NSString stringWithFormat:@"%@",dictUser[@"email"]];
146 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]]; 146 user.password = [NSString stringWithFormat:@"%@",dictUser[@"password"]];
147 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]]; 147 user.birthday = [NSString stringWithFormat:@"%@",dictUser[@"birthday"]];
148 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]]; 148 user.address = [NSString stringWithFormat:@"%@",dictUser[@"address"]];
149 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue]; 149 user.gender = [[NSString stringWithFormat:@"%@",dictUser[@"gender"]] intValue];
150 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue]; 150 user.height = [[NSString stringWithFormat:@"%@",dictUser[@"height"]] floatValue];
151 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue]; 151 user.weight = [[NSString stringWithFormat:@"%@",dictUser[@"weight"]] floatValue];
152 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]]; 152 user.user_description = [NSString stringWithFormat:@"%@",dictUser[@"description"]];
153 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]]; 153 user.created_at = [NSString stringWithFormat:@"%@",dictUser[@"created_at"]];
154 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]]; 154 user.physical_activity = [NSString stringWithFormat:@"%@",dictUser[@"physical_activity"]];
155 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]]; 155 user.profile_image = [NSString stringWithFormat:@"%@",dictUser[@"profile_image"]];
156 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]]; 156 user.updated_at = [NSString stringWithFormat:@"%@",dictUser[@"updated_at"]];
157 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue]; 157 user.delete_flag = [[NSString stringWithFormat:@"%@",dictUser[@"delete_flag"]] intValue];
158 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue]; 158 user.fat_rate = [[NSString stringWithFormat:@"%@",dictUser[@"fat_rate"]] intValue];
159 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue]; 159 user.profiles_share = [[NSString stringWithFormat:@"%@",dictUser[@"profiles_share"]] intValue];
160 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue]; 160 user.remember_me = [[NSString stringWithFormat:@"%@",dictUser[@"remember_me"]] intValue];
161 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue]; 161 user.sound_notifications_share = [[NSString stringWithFormat:@"%@",dictUser[@"sound_notifications_share"]] intValue];
162 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue]; 162 user.spend_calo_in_day = [[NSString stringWithFormat:@"%@",dictUser[@"spend_calo_in_day"]] intValue];
163 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue]; 163 user.target = [[NSString stringWithFormat:@"%@",dictUser[@"target"]] intValue];
164 completion(user, token, nil); 164 completion(user, token, nil);
165 } 165 }
166 else { // status = 0 error 166 else { // status = 0 error
167 NSString *message = dataResult[@"message"]; 167 NSString *message = dataResult[@"message"];
168 if (message == nil) { 168 if (message == nil) {
169 message = @"Unknown error"; 169 message = @"Unknown error";
170 } 170 }
171 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 171 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
172 completion(nil, nil, loginFaild); 172 completion(nil, nil, loginFaild);
173 } 173 }
174 } 174 }
175 else 175 else
176 { 176 {
177 completion(nil, nil, error); 177 completion(nil, nil, error);
178 } 178 }
179 }]; 179 }];
180 } 180 }
181 181
182 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion { 182 - (void)forgetPass:(NSString *)email CompletionHandler:(void (^)(NSError *)) completion {
183 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" token:@"" paras:@{@"email":email} completion:^(NSData *data, NSError *error) { 183 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass"] method:@"POST" token:@"" paras:@{@"email":email} completion:^(NSData *data, NSError *error) {
184 184
185 if (completion == NULL) { 185 if (completion == NULL) {
186 return ; 186 return ;
187 } 187 }
188 188
189 if (error == nil) 189 if (error == nil)
190 { 190 {
191 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 191 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
192 192
193 int status = [dataResult[@"status"] intValue]; 193 int status = [dataResult[@"status"] intValue];
194 if (status == 1) { // status = 1 success 194 if (status == 1) { // status = 1 success
195 completion(nil); 195 completion(nil);
196 } 196 }
197 else { // status = 0 error 197 else { // status = 0 error
198 NSString *message = dataResult[@"message"]; 198 NSString *message = dataResult[@"message"];
199 if (message == nil) { 199 if (message == nil) {
200 message = @"Unknown error"; 200 message = @"Unknown error";
201 } 201 }
202 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 202 NSError *forgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
203 completion(forgetPass); 203 completion(forgetPass);
204 } 204 }
205 } 205 }
206 else 206 else
207 { 207 {
208 completion(error); 208 completion(error);
209 } 209 }
210 }]; 210 }];
211 } 211 }
212 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion { 212 - (void)confirmForgetPass:(NSString *)email withConfirm:(NSString *)confirm CompletionHandler:(void (^)(NSError *)) completion {
213 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" token:@"" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) { 213 [self _request:[kServerAddress stringByAppendingFormat: @"forgetPass/confirm"] method:@"POST" token:@"" paras:@{@"email":email, @"code_confirm": confirm} completion:^(NSData *data, NSError *error) {
214 214
215 if (completion == NULL) { 215 if (completion == NULL) {
216 return ; 216 return ;
217 } 217 }
218 218
219 if (error == nil) 219 if (error == nil)
220 { 220 {
221 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 221 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
222 222
223 int status = [dataResult[@"status"] intValue]; 223 int status = [dataResult[@"status"] intValue];
224 if (status == 1) { // status = 1 success 224 if (status == 1) { // status = 1 success
225 completion(nil); 225 completion(nil);
226 } 226 }
227 else { // status = 0 error 227 else { // status = 0 error
228 NSString *message = dataResult[@"message"]; 228 NSString *message = dataResult[@"message"];
229 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 229 NSError *confirmForgetPass = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
230 completion(confirmForgetPass); 230 completion(confirmForgetPass);
231 } 231 }
232 } 232 }
233 else 233 else
234 { 234 {
235 completion(error); 235 completion(error);
236 } 236 }
237 }]; 237 }];
238 } 238 }
239 239
240 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion { 240 - (void)uploadImage:(NSString *)token andImageData:(NSData *)data CompletionHandler:(void (^)(NSString *, NSError *)) completion {
241 NSDictionary *dict = nil; 241 NSDictionary *dict = nil;
242 NSString *base64Encoded = [data base64EncodedStringWithOptions:0]; 242 NSString *base64Encoded = [data base64EncodedStringWithOptions:0];
243 if (token != nil) { 243 if (token != nil) {
244 dict = @{@"token":token, @"img": base64Encoded}; 244 dict = @{@"token":token, @"img": base64Encoded};
245 } 245 }
246 else { 246 else {
247 dict = @{@"img": base64Encoded}; 247 dict = @{@"img": base64Encoded};
248 } 248 }
249 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 249 [self _request:[kServerAddress stringByAppendingFormat: @"upload-image"] method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
250 250
251 if (completion == NULL) { 251 if (completion == NULL) {
252 return ; 252 return ;
253 } 253 }
254 254
255 if (error == nil) 255 if (error == nil)
256 { 256 {
257 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 257 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
258 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]]; 258 NSString *image_profile = [NSString stringWithFormat:@"%@", dataResult[@"message"]];
259 completion(image_profile, nil); 259 completion(image_profile, nil);
260 } 260 }
261 else 261 else
262 { 262 {
263 completion(nil, error); 263 completion(nil, error);
264 } 264 }
265 }]; 265 }];
266 } 266 }
267 267
268 -(NSString *) convertIntToString : (int) type { 268 -(NSString *) convertIntToString : (int) type {
269 switch (type) { 269 switch (type) {
270 case 1: 270 case 1:
271 return @"week"; 271 return @"week";
272 break; 272 break;
273 case 2: 273 case 2:
274 return @"oneMonth"; 274 return @"oneMonth";
275 break; 275 break;
276 case 3: 276 case 3:
277 return @"threeMonth"; 277 return @"threeMonth";
278 break; 278 break;
279 case 4: 279 case 4:
280 return @"sixMonth"; 280 return @"sixMonth";
281 break; 281 break;
282 default: 282 default:
283 return @"today"; 283 return @"today";
284 break; 284 break;
285 } 285 }
286 } 286 }
287 287
288 #pragma mark - Home Screen Function 288 #pragma mark - Home Screen Function
289 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion 289 - (void)requestTopWithMode:(int)mode andDate:(NSString *)date CompletionHandler:(void (^)(TopObject *, NSError *)) completion
290 { 290 {
291 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 291 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
292 NSString *url = [kServerAddress stringByAppendingFormat:@"api/top/%d/%@", mode, date]; 292 NSString *url = [kServerAddress stringByAppendingFormat:@"api/top/%d/%@", mode, date];
293 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 293 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
294 294
295 if (completion == NULL) { 295 if (completion == NULL) {
296 return ; 296 return ;
297 } 297 }
298 298
299 if (error == nil) 299 if (error == nil)
300 { 300 {
301 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 301 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
302 int status = [dataResult[@"status"] intValue]; 302 int status = [dataResult[@"status"] intValue];
303 if (status == 1) { // status = 1 success 303 if (status == 1) { // status = 1 success
304 if(dataResult[@"result"] != nil) { 304 if(dataResult[@"result"] != nil) {
305 NSDictionary * dictResult = dataResult[@"result"]; 305 NSDictionary * dictResult = dataResult[@"result"];
306 TopObject *topObject = [[TopObject alloc] init]; 306 TopObject *topObject = [[TopObject alloc] init];
307 TargetInfor *targetInfor = [[TargetInfor alloc] initWithData:dictResult[@"targetInf"]]; 307 TargetInfor *targetInfor = [[TargetInfor alloc] initWithData:dictResult[@"targetInf"]];
308 topObject.targetInfor = targetInfor; 308 topObject.targetInfor = targetInfor;
309 topObject.kcal = [[NSString stringWithFormat:@"%@", dictResult[@"kcal"]] intValue]; 309 topObject.kcal = [[NSString stringWithFormat:@"%@", dictResult[@"kcal"]] intValue];
310 topObject.distance = [[NSString stringWithFormat:@"%@", dictResult[@"distance"]] floatValue]; 310 topObject.distance = [[NSString stringWithFormat:@"%@", dictResult[@"distance"]] floatValue];
311 topObject.time = [NSString stringWithFormat:@"%@", dictResult[@"time"]]; 311 topObject.time = [NSString stringWithFormat:@"%@", dictResult[@"time"]];
312 NSMutableArray *arrayStep = [[NSMutableArray alloc] init]; 312 NSMutableArray *arrayStep = [[NSMutableArray alloc] init];
313 NSArray *array = dictResult[@"dataChart"]; 313 NSArray *array = dictResult[@"dataChart"];
314 for(NSDictionary *dict in array) { 314 for(NSDictionary *dict in array) {
315 StepObject *object = [[StepObject alloc] init]; 315 StepObject *object = [[StepObject alloc] init];
316 if([dict objectForKey:@"numStep"] != nil) { 316 if([dict objectForKey:@"numStep"] != nil) {
317 object.step = [dict[@"numStep"] intValue]; 317 object.step = [dict[@"numStep"] intValue];
318 } 318 }
319 if([dict objectForKey:@"hour"] != nil) { 319 if([dict objectForKey:@"hour"] != nil) {
320 object.hour = [dict[@"hour"] intValue]; 320 object.hour = [dict[@"hour"] intValue];
321 } 321 }
322 switch (mode) { 322 switch (mode) {
323 case 1: 323 case 1:
324 object.typeStep = @"walking"; 324 object.typeStep = @"walking";
325 break; 325 break;
326 case 2: 326 case 2:
327 object.typeStep = @"running"; 327 object.typeStep = @"running";
328 break; 328 break;
329 case 3: 329 case 3:
330 object.typeStep = @"bike"; 330 object.typeStep = @"bike";
331 break; 331 break;
332 default: 332 default:
333 break; 333 break;
334 } 334 }
335 [arrayStep addObject:object]; 335 [arrayStep addObject:object];
336 } 336 }
337 topObject.dataChart = [[NSMutableArray alloc] initWithArray:arrayStep]; 337 topObject.dataChart = [[NSMutableArray alloc] initWithArray:arrayStep];
338 completion(topObject, nil); 338 completion(topObject, nil);
339 } 339 }
340 else { 340 else {
341 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 341 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
342 completion(nil, errorObject); 342 completion(nil, errorObject);
343 } 343 }
344 } 344 }
345 else { 345 else {
346 NSString *message = dataResult[@"message"]; 346 NSString *message = dataResult[@"message"];
347 if (message == nil) { 347 if (message == nil) {
348 message = @"Unknown error"; 348 message = @"Unknown error";
349 } 349 }
350 350
351 if ([message isEqualToString:@"Token is invalid"]) { 351 if ([message isEqualToString:@"Token is invalid"]) {
352 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 352 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
353 [self requestTopWithMode:mode andDate:date CompletionHandler:completion]; 353 [self requestTopWithMode:mode andDate:date CompletionHandler:completion];
354 } 354 }
355 else { 355 else {
356 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 356 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
357 completion(nil, errorObject); 357 completion(nil, errorObject);
358 } 358 }
359 } 359 }
360 } 360 }
361 else 361 else
362 { 362 {
363 completion(nil, error); 363 completion(nil, error);
364 } 364 }
365 }]; 365 }];
366 } 366 }
367 367
368 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion { 368 - (void)requestCreateLog:(int)mode withStep:(int)numStep startDate:(NSString *)startDate endDate:(NSString *)endDate CompletionHandler:(void (^)(NSError *))completion {
369 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 369 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
370 NSString *url = [kServerAddress stringByAppendingFormat:@"api/createLog"]; 370 NSString *url = [kServerAddress stringByAppendingFormat:@"api/createLog"];
371 NSDictionary *dict = @{@"mode": [NSNumber numberWithInt:mode], @"numStep": [NSNumber numberWithInt:numStep], @"startTime": startDate, @"endTime": endDate}; 371 NSDictionary *dict = @{@"mode": [NSNumber numberWithInt:mode], @"numStep": [NSNumber numberWithInt:numStep], @"startTime": startDate, @"endTime": endDate};
372 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 372 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
373 373
374 if (completion == NULL) { 374 if (completion == NULL) {
375 return ; 375 return ;
376 } 376 }
377 377
378 if (error == nil) 378 if (error == nil)
379 { 379 {
380 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 380 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
381 int status = [dataResult[@"status"] intValue]; 381 int status = [dataResult[@"status"] intValue];
382 if (status == 1) { // status = 1 success 382 if (status == 1) { // status = 1 success
383 completion(nil); 383 completion(nil);
384 } 384 }
385 else { 385 else {
386 NSString *message = dataResult[@"message"]; 386 NSString *message = dataResult[@"message"];
387 if (message == nil) { 387 if (message == nil) {
388 message = @"Unknown error"; 388 message = @"Unknown error";
389 } 389 }
390 390
391 if ([message isEqualToString:@"Token is invalid"]) { 391 if ([message isEqualToString:@"Token is invalid"]) {
392 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 392 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
393 [self requestCreateLog:mode withStep:numStep startDate:startDate endDate:endDate CompletionHandler:completion]; 393 [self requestCreateLog:mode withStep:numStep startDate:startDate endDate:endDate CompletionHandler:completion];
394 } 394 }
395 else { 395 else {
396 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 396 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
397 completion(errorObject); 397 completion(errorObject);
398 } 398 }
399 } 399 }
400 } 400 }
401 else 401 else
402 { 402 {
403 completion(error); 403 completion(error);
404 } 404 }
405 }]; 405 }];
406 } 406 }
407 407
408 #pragma mark - History Screen Function 408 #pragma mark - History Screen Function
409 - (void) requestHistory:(NSString *)token atDate:(NSDate *)date withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryObject *, NSError *)) completion { 409 - (void) requestHistory:(NSString *)token atDate:(NSDate *)date withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryObject *, NSError *)) completion {
410 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/%@/%d", [self convertIntToString:type], mode]; 410 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/%@/%d", [self convertIntToString:type], mode];
411 NSLog(@"requestHistory link %@", url); 411 NSLog(@"requestHistory link %@", url);
412 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 412 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
413 413
414 if (completion == NULL) { 414 if (completion == NULL) {
415 return ; 415 return ;
416 } 416 }
417 417
418 if (error == nil) 418 if (error == nil)
419 { 419 {
420 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 420 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
421 NSLog(@"%@", dataResult); 421 NSLog(@"%@", dataResult);
422 int status = [dataResult[@"status"] intValue]; 422 int status = [dataResult[@"status"] intValue];
423 if (status == 1) { // status = 1 success 423 if (status == 1) { // status = 1 success
424 HistoryObject * object = [[HistoryObject alloc] initWithData:dataResult[@"result"]]; 424 HistoryObject * object = [[HistoryObject alloc] initWithData:dataResult[@"result"]];
425 completion(object, nil); 425 completion(object, nil);
426 } 426 }
427 else { 427 else {
428 NSString *message = dataResult[@"message"]; 428 NSString *message = dataResult[@"message"];
429 if (message == nil) { 429 if (message == nil) {
430 message = @"Unknown error"; 430 message = @"Unknown error";
431 } 431 }
432 432
433 if ([message isEqualToString:@"Token is invalid"]) { 433 if ([message isEqualToString:@"Token is invalid"]) {
434 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 434 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
435 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 435 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
436 [self requestHistory:tokenNew atDate:date withType:type andMode:mode CompletionHandler:completion]; 436 [self requestHistory:tokenNew atDate:date withType:type andMode:mode CompletionHandler:completion];
437 } 437 }
438 else { 438 else {
439 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 439 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
440 completion(nil, errorObject); 440 completion(nil, errorObject);
441 } 441 }
442 } 442 }
443 } 443 }
444 else 444 else
445 { 445 {
446 completion(nil, error); 446 completion(nil, error);
447 } 447 }
448 }]; 448 }];
449 } 449 }
450 450
451 - (void) requestHistoryGraph:(NSString *)token withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryGraphObject *, NSError *)) completion { 451 - (void) requestHistoryGraph:(NSString *)token withType:(int)type andMode:(int) mode CompletionHandler:(void (^)(HistoryGraphObject *, NSError *)) completion {
452 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/graph/%@/%d", [self convertIntToString:type], mode]; 452 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/graph/%@/%d", [self convertIntToString:type], mode];
453 NSLog(@"requestHistoryGraph link %@", url); 453 NSLog(@"requestHistoryGraph link %@", url);
454 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 454 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
455 455
456 if (completion == NULL) { 456 if (completion == NULL) {
457 return ; 457 return ;
458 } 458 }
459 459
460 if (error == nil) 460 if (error == nil)
461 { 461 {
462 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 462 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
463 NSLog(@"%@", dataResult); 463 NSLog(@"%@", dataResult);
464 int status = [dataResult[@"status"] intValue]; 464 int status = [dataResult[@"status"] intValue];
465 if (status == 1) { // status = 1 success 465 if (status == 1) { // status = 1 success
466 HistoryGraphObject * object = [[HistoryGraphObject alloc] initWithData:dataResult[@"result"]]; 466 HistoryGraphObject * object = [[HistoryGraphObject alloc] initWithData:dataResult[@"result"]];
467 completion(object, nil); 467 completion(object, nil);
468 } 468 }
469 else { 469 else {
470 NSString *message = dataResult[@"message"]; 470 NSString *message = dataResult[@"message"];
471 if (message == nil) { 471 if (message == nil) {
472 message = @"Unknown error"; 472 message = @"Unknown error";
473 } 473 }
474 474
475 if ([message isEqualToString:@"Token is invalid"]) { 475 if ([message isEqualToString:@"Token is invalid"]) {
476 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 476 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
477 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 477 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
478 [self requestHistoryGraph:tokenNew withType:type andMode:mode CompletionHandler:completion]; 478 [self requestHistoryGraph:tokenNew withType:type andMode:mode CompletionHandler:completion];
479 } 479 }
480 else { 480 else {
481 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 481 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
482 completion(nil, errorObject); 482 completion(nil, errorObject);
483 } 483 }
484 } 484 }
485 } 485 }
486 else 486 else
487 { 487 {
488 completion(nil, error); 488 completion(nil, error);
489 } 489 }
490 }]; 490 }];
491 } 491 }
492 492
493 - (void) requestHistoryList:(NSString *)token withType:(int)type andMode:(int) mode AtPage:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 493 - (void) requestHistoryList:(NSString *)token withType:(int)type andMode:(int) mode AtPage:(int) page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
494 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/list/%@/%d?page=%d&record=50", [self convertIntToString:type], mode, page]; 494 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/history/list/%@/%d?page=%d&record=50", [self convertIntToString:type], mode, page];
495 NSLog(@"requestHistoryList link %@", url); 495 NSLog(@"requestHistoryList link %@", url);
496 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 496 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
497 497
498 if (completion == NULL) { 498 if (completion == NULL) {
499 return ; 499 return ;
500 } 500 }
501 501
502 if (error == nil) 502 if (error == nil)
503 { 503 {
504 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 504 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
505 NSLog(@"%@", dataResult); 505 NSLog(@"%@", dataResult);
506 int status = [dataResult[@"status"] intValue]; 506 int status = [dataResult[@"status"] intValue];
507 if (status == 1) { // status = 1 success 507 if (status == 1) { // status = 1 success
508 if(dataResult[@"result"] != nil) { 508 if(dataResult[@"result"] != nil) {
509 NSArray * array = dataResult[@"result"][@"data"]; 509 NSArray * array = dataResult[@"result"][@"data"];
510 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init]; 510 NSMutableArray * arrayHistory = [[NSMutableArray alloc] init];
511 for(NSDictionary * dict in array) { 511 for(NSDictionary * dict in array) {
512 HistoryObject * object = [[HistoryObject alloc] initWithData:dict]; 512 HistoryObject * object = [[HistoryObject alloc] initWithData:dict];
513 [arrayHistory addObject:object]; 513 [arrayHistory addObject:object];
514 } 514 }
515 completion(arrayHistory, nil); 515 completion(arrayHistory, nil);
516 } 516 }
517 else { 517 else {
518 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 518 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
519 completion(nil, errorObject); 519 completion(nil, errorObject);
520 } 520 }
521 } 521 }
522 else { 522 else {
523 NSString *message = dataResult[@"message"]; 523 NSString *message = dataResult[@"message"];
524 if (message == nil) { 524 if (message == nil) {
525 message = @"Unknown error"; 525 message = @"Unknown error";
526 } 526 }
527 527
528 if ([message isEqualToString:@"Token is invalid"]) { 528 if ([message isEqualToString:@"Token is invalid"]) {
529 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 529 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
530 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 530 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
531 [self requestHistoryList:tokenNew withType:type andMode:mode AtPage:page CompletionHandler:completion]; 531 [self requestHistoryList:tokenNew withType:type andMode:mode AtPage:page CompletionHandler:completion];
532 } 532 }
533 else { 533 else {
534 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 534 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
535 completion(nil, errorObject); 535 completion(nil, errorObject);
536 } 536 }
537 } 537 }
538 } 538 }
539 else 539 else
540 { 540 {
541 completion(nil, error); 541 completion(nil, error);
542 } 542 }
543 }]; 543 }];
544 } 544 }
545 545
546 #pragma mark - SNS Screen Function 546 #pragma mark - SNS Screen Function
547 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 547 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
548 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/sns/%d", page]; 548 NSString *url = [kServerAddress stringByAppendingFormat:@"/api/sns/%d", page];
549 if(groupID > -1) { 549 if(groupID > -1) {
550 url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?group_id=%d&page=%d&record=10", groupID, page]; 550 url = [kServerAddress stringByAppendingFormat:@"api/tweet/list?group_id=%d&page=%d&record=10", groupID, page];
551 } 551 }
552 NSLog(@"requestTweetsList link %@", url); 552 NSLog(@"requestTweetsList link %@", url);
553 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 553 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
554 554
555 if (completion == NULL) { 555 if (completion == NULL) {
556 return ; 556 return ;
557 } 557 }
558 558
559 if (error == nil) 559 if (error == nil)
560 { 560 {
561 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 561 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
562 NSLog(@"%@", dataResult); 562 NSLog(@"%@", dataResult);
563 int status = [dataResult[@"status"] intValue]; 563 int status = [dataResult[@"status"] intValue];
564 if (status == 1) { // status = 1 success 564 if (status == 1) { // status = 1 success
565 if(dataResult[@"result"] != nil) { 565 if(dataResult[@"result"] != nil) {
566 NSArray * array = dataResult[@"result"]; 566 NSArray * array = dataResult[@"result"];
567 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 567 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
568 for(NSDictionary * dict in array) { 568 for(NSDictionary * dict in array) {
569 TweetObject * object = [[TweetObject alloc] initWithData:dict]; 569 TweetObject * object = [[TweetObject alloc] initWithData:dict];
570 [arrayTweets addObject:object]; 570 [arrayTweets addObject:object];
571 } 571 }
572 completion(arrayTweets, nil); 572 completion(arrayTweets, nil);
573 } 573 }
574 else { 574 else {
575 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 575 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
576 completion(nil, errorObject); 576 completion(nil, errorObject);
577 } 577 }
578 } 578 }
579 else { 579 else {
580 NSString *message = dataResult[@"message"]; 580 NSString *message = dataResult[@"message"];
581 if (message == nil) { 581 if (message == nil) {
582 message = @"Unknown error"; 582 message = @"Unknown error";
583 } 583 }
584 584
585 if ([message isEqualToString:@"Token is invalid"]) { 585 if ([message isEqualToString:@"Token is invalid"]) {
586 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 586 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
587 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 587 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
588 [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 588 [self requestTweetsList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
589 } 589 }
590 else { 590 else {
591 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 591 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
592 completion(nil, errorObject); 592 completion(nil, errorObject);
593 } 593 }
594 } 594 }
595 } 595 }
596 else 596 else
597 { 597 {
598 completion(nil, error); 598 completion(nil, error);
599 } 599 }
600 }]; 600 }];
601 } 601 }
602 602
603 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 603 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
604 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/search"]; 604 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/search"];
605 NSLog(@"searchGroup link %@ page %d", url, page); 605 NSLog(@"searchGroup link %@ page %d", url, page);
606 if(searchTask != nil) { 606 if(searchTask != nil) {
607 [searchTask cancel]; 607 [searchTask cancel];
608 } 608 }
609 609
610 searchTask = [self _request:url method:@"POST" token:token paras:@{@"keyword":key, @"page": [NSNumber numberWithInt:page]} completion:^(NSData *data, NSError *error) { 610 searchTask = [self _request:url method:@"POST" token:token paras:@{@"keyword":key, @"page": [NSNumber numberWithInt:page]} completion:^(NSData *data, NSError *error) {
611 searchTask = nil; 611 searchTask = nil;
612 if (completion == NULL) { 612 if (completion == NULL) {
613 return ; 613 return ;
614 } 614 }
615 615
616 if (error == nil) 616 if (error == nil)
617 { 617 {
618 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 618 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
619 NSLog(@"%@", dataResult); 619 NSLog(@"%@", dataResult);
620 int status = [dataResult[@"status"] intValue]; 620 int status = [dataResult[@"status"] intValue];
621 if (status == 1) { // status = 1 success 621 if (status == 1) { // status = 1 success
622 if(dataResult[@"result"] != nil) { 622 if(dataResult[@"result"] != nil) {
623 NSArray * array = dataResult[@"result"]; 623 NSArray * array = dataResult[@"result"];
624 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 624 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
625 for(NSDictionary * dict in array) { 625 for(NSDictionary * dict in array) {
626 GroupObject * object = [[GroupObject alloc] initWithData:dict]; 626 GroupObject * object = [[GroupObject alloc] initWithData:dict];
627 [arrayTweets addObject:object]; 627 [arrayTweets addObject:object];
628 } 628 }
629 completion(arrayTweets, nil); 629 completion(arrayTweets, nil);
630 } 630 }
631 else { 631 else {
632 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 632 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
633 completion(nil, errorObject); 633 completion(nil, errorObject);
634 } 634 }
635 } 635 }
636 else { 636 else {
637 NSString *message = dataResult[@"message"]; 637 NSString *message = dataResult[@"message"];
638 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 638 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
639 completion(nil, errorObject); 639 completion(nil, errorObject);
640 } 640 }
641 } 641 }
642 else 642 else
643 { 643 {
644 completion(nil, error); 644 completion(nil, error);
645 } 645 }
646 }]; 646 }];
647 } 647 }
648 648
649 #pragma mark - Group Function 649 #pragma mark - Group Function
650 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion { 650 -(void) requestCreateGroup:(NSString *)token withGroup:(GroupObject *)group CompletionHandler:(void (^)(GroupObject *, NSError *)) completion {
651 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"]; 651 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"];
652 NSLog(@"requestCreateGroup link %@", url); 652 NSLog(@"requestCreateGroup link %@", url);
653 NSDictionary * dict = @{@"group_name":group.name, 653 NSDictionary * dict = @{@"group_name":group.name,
654 @"goal":group.goal, 654 @"goal":group.goal,
655 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode], 655 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode],
656 @"run_mode_active":[NSNumber numberWithBool:group.runMode], 656 @"run_mode_active":[NSNumber numberWithBool:group.runMode],
657 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode], 657 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode],
658 @"step_mode_active":[NSNumber numberWithBool:group.stepMode], 658 @"step_mode_active":[NSNumber numberWithBool:group.stepMode],
659 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode], 659 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode],
660 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode], 660 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode],
661 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal], 661 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal],
662 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal], 662 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal],
663 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]}; 663 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]};
664 664
665 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) { 665 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
666 666
667 if (completion == NULL) { 667 if (completion == NULL) {
668 return ; 668 return ;
669 } 669 }
670 670
671 if (error == nil) 671 if (error == nil)
672 { 672 {
673 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 673 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
674 NSLog(@"%@", dataResult); 674 NSLog(@"%@", dataResult);
675 int status = [dataResult[@"status"] intValue]; 675 int status = [dataResult[@"status"] intValue];
676 if (status == 1) { // status = 1 success 676 if (status == 1) { // status = 1 success
677 if(dataResult[@"result"] != nil) { 677 if(dataResult[@"result"] != nil) {
678 NSDictionary * dict = dataResult[@"result"]; 678 NSDictionary * dict = dataResult[@"result"];
679 group.groupID = [dict[@"group_id"] intValue]; 679 group.groupID = [dict[@"group_id"] intValue];
680 completion(group, nil); 680 completion(group, nil);
681 } 681 }
682 else { 682 else {
683 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 683 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
684 completion(nil, errorObject); 684 completion(nil, errorObject);
685 } 685 }
686 } 686 }
687 else { 687 else {
688 NSString *message = dataResult[@"message"]; 688 NSString *message = dataResult[@"message"];
689 if (message == nil) { 689 if (message == nil) {
690 message = @"Unknown error"; 690 message = @"Unknown error";
691 } 691 }
692 692
693 if ([message isEqualToString:@"Token is invalid"]) { 693 if ([message isEqualToString:@"Token is invalid"]) {
694 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 694 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
695 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 695 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
696 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion]; 696 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion];
697 } 697 }
698 else { 698 else {
699 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 699 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
700 completion(nil, errorObject); 700 completion(nil, errorObject);
701 } 701 }
702 } 702 }
703 } 703 }
704 else 704 else
705 { 705 {
706 completion(nil, error); 706 completion(nil, error);
707 } 707 }
708 }]; 708 }];
709 } 709 }
710 710
711 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion { 711 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion {
712 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID]; 712 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID];
713 NSLog(@"getGroupDetail link %@", url); 713 NSLog(@"getGroupDetail link %@", url);
714 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 714 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
715 715
716 if (completion == NULL) { 716 if (completion == NULL) {
717 return ; 717 return ;
718 } 718 }
719 719
720 if (error == nil) 720 if (error == nil)
721 { 721 {
722 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 722 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
723 NSLog(@"%@", dataResult); 723 NSLog(@"%@", dataResult);
724 int status = [dataResult[@"status"] intValue]; 724 int status = [dataResult[@"status"] intValue];
725 if (status == 1) { // status = 1 success 725 if (status == 1) { // status = 1 success
726 if(dataResult[@"result"] != nil) { 726 if(dataResult[@"result"] != nil) {
727 NSArray * array = dataResult[@"result"]; 727 NSArray * array = dataResult[@"result"];
728 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID]; 728 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID];
729 completion(object, nil); 729 completion(object, nil);
730 } 730 }
731 else { 731 else {
732 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 732 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
733 completion(nil, errorObject); 733 completion(nil, errorObject);
734 } 734 }
735 } 735 }
736 else { 736 else {
737 NSString *message = dataResult[@"message"]; 737 NSString *message = dataResult[@"message"];
738 if (message == nil) { 738 if (message == nil) {
739 message = @"Unknown error"; 739 message = @"Unknown error";
740 } 740 }
741 741
742 if ([message isEqualToString:@"Token is invalid"]) { 742 if ([message isEqualToString:@"Token is invalid"]) {
743 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 743 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
744 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 744 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
745 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion]; 745 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion];
746 } 746 }
747 else { 747 else {
748 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 748 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
749 completion(nil, errorObject); 749 completion(nil, errorObject);
750 } 750 }
751 } 751 }
752 } 752 }
753 else 753 else
754 { 754 {
755 completion(nil, error); 755 completion(nil, error);
756 } 756 }
757 }]; 757 }];
758 } 758 }
759 759
760 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion { 760 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
761 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/member/%d/%d", groupID, page]; 761 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/member/%d/%d", groupID, page];
762 NSLog(@"requestMemberList link %@ page %d", url, page); 762 NSLog(@"requestMemberList link %@ page %d", url, page);
763 763
764 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) { 764 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
765 if (completion == NULL) { 765 if (completion == NULL) {
766 return ; 766 return ;
767 } 767 }
768 768
769 if (error == nil) 769 if (error == nil)
770 { 770 {
771 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 771 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
772 NSLog(@"%@", dataResult); 772 NSLog(@"%@", dataResult);
773 int status = [dataResult[@"status"] intValue]; 773 int status = [dataResult[@"status"] intValue];
774 if (status == 1) { // status = 1 success 774 if (status == 1) { // status = 1 success
775 if(dataResult[@"result"] != nil) { 775 if(dataResult[@"result"] != nil) {
776 NSArray * array = dataResult[@"result"]; 776 NSArray * array = dataResult[@"result"];
777 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 777 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
778 for(NSDictionary * dict in array) { 778 for(NSDictionary * dict in array) {
779 MemberObject * object = [[MemberObject alloc] initWithData:dict]; 779 MemberObject * object = [[MemberObject alloc] initWithData:dict];
780 [arrayTweets addObject:object]; 780 [arrayTweets addObject:object];
781 } 781 }
782 completion(arrayTweets, nil); 782 completion(arrayTweets, nil);
783 } 783 }
784 else { 784 else {
785 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 785 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
786 completion(nil, errorObject); 786 completion(nil, errorObject);
787 } 787 }
788 } 788 }
789 else { 789 else {
790 NSString *message = dataResult[@"message"]; 790 NSString *message = dataResult[@"message"];
791 if (message == nil) { 791 if (message == nil) {
792 message = @"Unknown error"; 792 message = @"Unknown error";
793 } 793 }
794 794
795 if ([message isEqualToString:@"Token is invalid"]) { 795 if ([message isEqualToString:@"Token is invalid"]) {
796 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 796 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
797 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 797 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
798 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 798 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
799 } 799 }
800 else { 800 else {
801 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 801 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
802 completion(nil, errorObject); 802 completion(nil, errorObject);
803 } 803 }
804 } 804 }
805 } 805 }
806 else 806 else
807 { 807 {
808 completion(nil, error); 808 completion(nil, error);
809 } 809 }
810 }]; 810 }];
811 } 811 }
812 812
813 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion { 813 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion {
814 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"]; 814 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"];
815 NSLog(@"requestJoinGroup link %@", url); 815 NSLog(@"requestJoinGroup link %@", url);
816 816
817 searchTask = [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) { 817 [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) {
818 searchTask = nil;
819 if (completion == NULL) { 818 if (completion == NULL) {
820 return ; 819 return ;
821 } 820 }
822 821
823 if (error == nil) 822 if (error == nil)
824 { 823 {
825 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 824 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
826 NSLog(@"%@", dataResult); 825 NSLog(@"%@", dataResult);
827 int status = [dataResult[@"status"] intValue]; 826 int status = [dataResult[@"status"] intValue];
828 if (status == 1) { // status = 1 success 827 if (status == 1) { // status = 1 success
829 if(dataResult[@"result"] != nil) { 828 if(dataResult[@"result"] != nil) {
830 completion(nil); 829 completion(nil);
831 } 830 }
832 else { 831 else {
833 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 832 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
834 completion(errorObject); 833 completion(errorObject);
835 } 834 }
836 } 835 }
837 else { 836 else {
838 NSString *message = dataResult[@"message"]; 837 NSString *message = dataResult[@"message"];
839 if ([message isEqualToString:@"Token is invalid"]) { 838 if ([message isEqualToString:@"Token is invalid"]) {
840 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 839 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
841 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 840 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
842 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion]; 841 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion];
843 } 842 }
844 else { 843 else {
845 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 844 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
846 completion(errorObject); 845 completion(errorObject);
847 } 846 }
848 } 847 }
849 } 848 }
850 else 849 else
851 { 850 {
852 completion(error); 851 completion(error);
853 } 852 }
854 }]; 853 }];
855 } 854 }
856 855
856 - (void) requestGroupList:(NSString *)token CompletionHandler:(void (^)(NSArray *, NSError *)) completion {
857 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/list"];
858 NSLog(@"requestGroupList link %@", url);
859
860 [self _request:url method:@"GET" token:token paras:nil completion:^(NSData *data, NSError *error) {
861 if (completion == NULL) {
862 return ;
863 }
864
865 if (error == nil)
866 {
867 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
868 NSLog(@"%@", dataResult);
869 int status = [dataResult[@"status"] intValue];
870 if (status == 1) { // status = 1 success
871 if(dataResult[@"result"] != nil) {
872 NSArray * array = dataResult[@"result"];
873 NSMutableArray * arrayGroup = [[NSMutableArray alloc] init];
874 for(NSDictionary * dict in array) {
875 GroupObject * object = [[GroupObject alloc] initWithShortData:dict];
876 [arrayGroup addObject:object];
877 }
878 completion(arrayGroup, nil);
879 }
880 else {
881 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
882 completion(nil, errorObject);
883 }
884 }
885 else {
886 NSString *message = dataResult[@"message"];
887 if (message == nil) {
888 message = @"Unknown error";
889 }
890
891 if ([message isEqualToString:@"Token is invalid"]) {
892 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
893 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
894 [self requestGroupList:tokenNew CompletionHandler:completion];
895 }
896 else {
897 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
898 completion(nil, errorObject);
899 }
900 }
901 }
902 else
903 {
904 completion(nil, error);
905 }
906 }];
907 }
857 #pragma mark - Common API 908 #pragma mark - Common API
858 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion { 909 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion {
859 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) { 910 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) {
860 911
861 if (completion == NULL) { 912 if (completion == NULL) {
862 return ; 913 return ;
863 } 914 }
864 915
865 if (error == nil) 916 if (error == nil)
866 { 917 {
867 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 918 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
868 919
869 int status = [dataResult[@"status"] intValue]; 920 int status = [dataResult[@"status"] intValue];
870 if (status == 1) { // status = 1 success 921 if (status == 1) { // status = 1 success
871 NSArray *arrayResult = dataResult[@"result"]; 922 NSArray *arrayResult = dataResult[@"result"];
872 if (arrayResult.count > 0) { 923 if (arrayResult.count > 0) {
873 NSString *token = arrayResult[0]; 924 NSString *token = arrayResult[0];
874 completion(token, nil); 925 completion(token, nil);
875 } 926 }
876 else { 927 else {
877 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 928 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
878 completion(nil, errorObject); 929 completion(nil, errorObject);
879 } 930 }
880 931
881 } 932 }
882 else { // status = 0 error 933 else { // status = 0 error
883 NSString *message = dataResult[@"message"]; 934 NSString *message = dataResult[@"message"];
884 if (message == nil) { 935 if (message == nil) {
885 message = @"Unknown error"; 936 message = @"Unknown error";
886 } 937 }
887 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 938 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
888 completion(nil, loginFaild); 939 completion(nil, loginFaild);
889 } 940 }
890 } 941 }
891 else 942 else
892 { 943 {
893 completion(nil, error); 944 completion(nil, error);
894 } 945 }
895 }]; 946 }];
896 } 947 }
897 948
898 #pragma mark - Private Function 949 #pragma mark - Private Function
899 - (void) checkToken { 950 - (void) checkToken {
900 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil]; 951 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil];
901 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser]; 952 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser];
902 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data]; 953 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data];
903 if (user != nil) { 954 if (user != nil) {
904 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) { 955 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) {
905 if (error == nil) { 956 if (error == nil) {
906 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken]; 957 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken];
907 [[NSUserDefaults standardUserDefaults] synchronize]; 958 [[NSUserDefaults standardUserDefaults] synchronize];
908 } 959 }
909 }]; 960 }];
910 } 961 }
911 } 962 }
912 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary 963 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary
913 { 964 {
914 NSMutableArray *parts = [[NSMutableArray alloc] init]; 965 NSMutableArray *parts = [[NSMutableArray alloc] init];
915 for (id key in dictionary) 966 for (id key in dictionary)
916 { 967 {
917 NSString *encodedValue = [[dictionary[key] description] urlencode]; 968 NSString *encodedValue = [[dictionary[key] description] urlencode];
918 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; 969 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
919 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue]; 970 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue];
920 [parts addObject:part]; 971 [parts addObject:part];
921 } 972 }
922 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"]; 973 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"];
923 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding]; 974 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding];
924 } 975 }
925 976
926 - (NSURLSessionDataTask *) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion 977 - (NSURLSessionDataTask *) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion
927 { 978 {
928 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]]; 979 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]];
929 request.HTTPMethod = method; 980 request.HTTPMethod = method;
930 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"]; 981 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"];
931 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"]; 982 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"];
932 if(token != nil && ![token isEqual: @""]) { 983 if(token != nil && ![token isEqual: @""]) {
933 [request setValue: token forHTTPHeaderField: @"token"]; 984 [request setValue: token forHTTPHeaderField: @"token"];
934 } 985 }
935 [request setTimeoutInterval:self.timeOutInterval]; 986 [request setTimeoutInterval:self.timeOutInterval];
936 987
937 if (paras != nil) 988 if (paras != nil)
938 { 989 {
939 NSData *encodedData = [self _encodeDictionary: paras]; 990 NSData *encodedData = [self _encodeDictionary: paras];
940 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"]; 991 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"];
941 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"]; 992 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"];
942 [request setHTTPBody: encodedData]; 993 [request setHTTPBody: encodedData];
943 } 994 }
944 995
945 NSURLSession *session = [NSURLSession sharedSession]; 996 NSURLSession *session = [NSURLSession sharedSession];
946 NSURLSessionDataTask *task = [session dataTaskWithRequest:request 997 NSURLSessionDataTask *task = [session dataTaskWithRequest:request
947 completionHandler: 998 completionHandler:
948 ^(NSData *data, NSURLResponse *response, NSError *error) { 999 ^(NSData *data, NSURLResponse *response, NSError *error) {
949 if (completion == NULL) { 1000 if (completion == NULL) {
950 return ; 1001 return ;
951 } 1002 }
952 if (error == nil) 1003 if (error == nil)
953 { 1004 {
954 completion(data, nil); 1005 completion(data, nil);
955 } 1006 }
956 else 1007 else
957 { 1008 {
958 completion(nil, error); 1009 completion(nil, error);
959 } 1010 }
960 }]; 1011 }];
961 [task resume]; 1012 [task resume];
962 return task; 1013 return task;
963 } 1014 }
964 1015
965 -(void)waitUntilDone:(void(^)(void))waitBlock { 1016 -(void)waitUntilDone:(void(^)(void))waitBlock {
966 //use your statement or call method here 1017 //use your statement or call method here
967 if(waitBlock){ 1018 if(waitBlock){
968 waitBlock(); 1019 waitBlock();
969 } 1020 }
970 } 1021 }
971 1022
972 @end 1023 @end