Commit 03a8708ee32eced7335c64cd8be7fbcae9946f3d

Authored by nvtu11790@gmail.com
1 parent da40f74562

Finish create group screen, add API create group, optimize UX when search group

Showing 12 changed files with 859 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 */; };
62 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */; };
61 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */; }; 63 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */; };
62 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */; }; 64 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */; };
63 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E96855091F3C444900317CEF /* AutoTransButton.m */; }; 65 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E96855091F3C444900317CEF /* AutoTransButton.m */; };
64 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */; }; 66 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */; };
65 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */; }; 67 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */; };
66 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E997E0251F3AB66500709FB1 /* Social.framework */; }; 68 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E997E0251F3AB66500709FB1 /* Social.framework */; };
67 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AA1F336F3600C78787 /* CollectionView.m */; }; 69 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AA1F336F3600C78787 /* CollectionView.m */; };
68 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13AC1F336F4500C78787 /* CollectionView.xib */; }; 70 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13AC1F336F4500C78787 /* CollectionView.xib */; };
69 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */; }; 71 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */; };
70 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */; }; 72 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */; };
71 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909201F3D559D004CF99F /* TweetObject.m */; }; 73 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909201F3D559D004CF99F /* TweetObject.m */; };
72 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */; }; 74 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */; };
73 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */; }; 75 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */; };
74 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */; }; 76 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */; };
75 /* End PBXBuildFile section */ 77 /* End PBXBuildFile section */
76 78
77 /* Begin PBXContainerItemProxy section */ 79 /* Begin PBXContainerItemProxy section */
78 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = { 80 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */ = {
79 isa = PBXContainerItemProxy; 81 isa = PBXContainerItemProxy;
80 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 82 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
81 proxyType = 1; 83 proxyType = 1;
82 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 84 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
83 remoteInfo = LifeLog; 85 remoteInfo = LifeLog;
84 }; 86 };
85 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = { 87 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */ = {
86 isa = PBXContainerItemProxy; 88 isa = PBXContainerItemProxy;
87 containerPortal = 6E84E3691F27A700001EB88E /* Project object */; 89 containerPortal = 6E84E3691F27A700001EB88E /* Project object */;
88 proxyType = 1; 90 proxyType = 1;
89 remoteGlobalIDString = 6E84E3701F27A700001EB88E; 91 remoteGlobalIDString = 6E84E3701F27A700001EB88E;
90 remoteInfo = LifeLog; 92 remoteInfo = LifeLog;
91 }; 93 };
92 /* End PBXContainerItemProxy section */ 94 /* End PBXContainerItemProxy section */
93 95
94 /* Begin PBXFileReference section */ 96 /* Begin PBXFileReference section */
95 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>"; }; 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>"; };
96 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LifeLog.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 98 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LifeLog.framework; sourceTree = BUILT_PRODUCTS_DIR; };
97 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>"; }; 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>"; };
98 6E18CED01F2E39DB0029891F /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; }; 100 6E18CED01F2E39DB0029891F /* LoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginViewController.h; sourceTree = "<group>"; };
99 6E18CED11F2E39DB0029891F /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; }; 101 6E18CED11F2E39DB0029891F /* LoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginViewController.m; sourceTree = "<group>"; };
100 6E18CED21F2E39DB0029891F /* LoginViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; }; 102 6E18CED21F2E39DB0029891F /* LoginViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LoginViewController.xib; sourceTree = "<group>"; };
101 6E18CED61F2E3C840029891F /* ServerAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerAPI.h; sourceTree = "<group>"; }; 103 6E18CED61F2E3C840029891F /* ServerAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServerAPI.h; sourceTree = "<group>"; };
102 6E18CED71F2E3C840029891F /* ServerAPI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerAPI.m; sourceTree = "<group>"; }; 104 6E18CED71F2E3C840029891F /* ServerAPI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ServerAPI.m; sourceTree = "<group>"; };
103 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; }; 105 6E18CEDA1F2E40F50029891F /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = "<group>"; };
104 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; }; 106 6E18CEDB1F2E40F50029891F /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = "<group>"; };
105 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; }; 107 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; };
106 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; }; 108 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; };
107 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; }; 109 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; };
108 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingCollectionView.h; sourceTree = "<group>"; }; 110 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingCollectionView.h; sourceTree = "<group>"; };
109 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingCollectionView.m; sourceTree = "<group>"; }; 111 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingCollectionView.m; sourceTree = "<group>"; };
110 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingScrollView.h; sourceTree = "<group>"; }; 112 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingScrollView.h; sourceTree = "<group>"; };
111 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingScrollView.m; sourceTree = "<group>"; }; 113 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingScrollView.m; sourceTree = "<group>"; };
112 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingTableView.h; sourceTree = "<group>"; }; 114 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingTableView.h; sourceTree = "<group>"; };
113 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingTableView.m; sourceTree = "<group>"; }; 115 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingTableView.m; sourceTree = "<group>"; };
114 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+TPKeyboardAvoidingAdditions.h"; sourceTree = "<group>"; }; 116 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+TPKeyboardAvoidingAdditions.h"; sourceTree = "<group>"; };
115 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+TPKeyboardAvoidingAdditions.m"; sourceTree = "<group>"; }; 117 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+TPKeyboardAvoidingAdditions.m"; sourceTree = "<group>"; };
116 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; 118 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; };
117 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; 119 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
118 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; 120 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
119 6E84E3781F27A701001EB88E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; 121 6E84E3781F27A701001EB88E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
120 6E84E3801F27A701001EB88E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 122 6E84E3801F27A701001EB88E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
121 6E84E3831F27A701001EB88E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 123 6E84E3831F27A701001EB88E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
122 6E84E3851F27A701001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 124 6E84E3851F27A701001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
123 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 125 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
124 6E84E38E1F27A703001EB88E /* LifeLogTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogTests.m; sourceTree = "<group>"; }; 126 6E84E38E1F27A703001EB88E /* LifeLogTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogTests.m; sourceTree = "<group>"; };
125 6E84E3901F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 127 6E84E3901F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
126 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 128 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LifeLogUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
127 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = "<group>"; }; 129 6E84E3991F27A703001EB88E /* LifeLogUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LifeLogUITests.m; sourceTree = "<group>"; };
128 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 130 6E84E39B1F27A703001EB88E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
129 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; }; 131 6E84E3AD1F27A975001EB88E /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = "<group>"; };
130 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; }; 132 6E84E3AE1F27A975001EB88E /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
131 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; }; 133 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HomeViewController.xib; sourceTree = "<group>"; };
132 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; }; 134 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; };
133 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = "<group>"; }; 135 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = "<group>"; };
134 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = "<group>"; }; 136 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = "<group>"; };
135 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingViewController.h; sourceTree = "<group>"; }; 137 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingViewController.h; sourceTree = "<group>"; };
136 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingViewController.m; sourceTree = "<group>"; }; 138 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingViewController.m; sourceTree = "<group>"; };
137 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingViewController.xib; sourceTree = "<group>"; }; 139 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingViewController.xib; sourceTree = "<group>"; };
138 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSViewController.h; sourceTree = "<group>"; }; 140 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSViewController.h; sourceTree = "<group>"; };
139 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSViewController.m; sourceTree = "<group>"; }; 141 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSViewController.m; sourceTree = "<group>"; };
140 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSViewController.xib; sourceTree = "<group>"; }; 142 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSViewController.xib; sourceTree = "<group>"; };
141 6E84E3C21F27ACAE001EB88E /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewController.h; sourceTree = "<group>"; }; 143 6E84E3C21F27ACAE001EB88E /* MapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapViewController.h; sourceTree = "<group>"; };
142 6E84E3C31F27ACAE001EB88E /* MapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewController.m; sourceTree = "<group>"; }; 144 6E84E3C31F27ACAE001EB88E /* MapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapViewController.m; sourceTree = "<group>"; };
143 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; }; 145 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapViewController.xib; sourceTree = "<group>"; };
144 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = "<group>"; }; 146 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = "<group>"; };
145 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = "<group>"; }; 147 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = "<group>"; };
146 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TodayViewController.xib; sourceTree = "<group>"; }; 148 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TodayViewController.xib; sourceTree = "<group>"; };
147 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StepObject.h; sourceTree = "<group>"; }; 149 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StepObject.h; sourceTree = "<group>"; };
148 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StepObject.m; sourceTree = "<group>"; }; 150 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StepObject.m; sourceTree = "<group>"; };
149 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetInfor.h; sourceTree = "<group>"; }; 151 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetInfor.h; sourceTree = "<group>"; };
150 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetInfor.m; sourceTree = "<group>"; }; 152 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TargetInfor.m; sourceTree = "<group>"; };
151 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TopObject.h; sourceTree = "<group>"; }; 153 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TopObject.h; sourceTree = "<group>"; };
152 6EA4AF301F40BB7A00F52CFE /* TopObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TopObject.m; sourceTree = "<group>"; }; 154 6EA4AF301F40BB7A00F52CFE /* TopObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TopObject.m; sourceTree = "<group>"; };
153 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+helper.h"; sourceTree = "<group>"; }; 155 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+helper.h"; sourceTree = "<group>"; };
154 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+helper.m"; sourceTree = "<group>"; }; 156 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+helper.m"; sourceTree = "<group>"; };
155 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; }; 157 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; };
156 6EDC8BED1F2C2FB800765ACC /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; }; 158 6EDC8BED1F2C2FB800765ACC /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; };
157 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; }; 159 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMMotionActivityExtra.h; sourceTree = "<group>"; };
158 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; }; 160 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMMotionActivityExtra.m; sourceTree = "<group>"; };
159 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; }; 161 6EF163091F29069300DA306C /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = "<group>"; };
160 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfirmForgetPassViewController.h; sourceTree = "<group>"; }; 162 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfirmForgetPassViewController.h; sourceTree = "<group>"; };
161 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfirmForgetPassViewController.m; sourceTree = "<group>"; }; 163 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfirmForgetPassViewController.m; sourceTree = "<group>"; };
162 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfirmForgetPassViewController.xib; sourceTree = "<group>"; }; 164 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConfirmForgetPassViewController.xib; sourceTree = "<group>"; };
163 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; }; 165 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = "<group>"; };
164 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; }; 166 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = "<group>"; };
165 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; }; 167 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterViewController.h; sourceTree = "<group>"; };
166 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterViewController.m; sourceTree = "<group>"; }; 168 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegisterViewController.m; sourceTree = "<group>"; };
167 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RegisterViewController.xib; sourceTree = "<group>"; }; 169 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RegisterViewController.xib; sourceTree = "<group>"; };
168 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupViewController.h; sourceTree = "<group>"; }; 170 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupViewController.h; sourceTree = "<group>"; };
169 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupViewController.m; sourceTree = "<group>"; }; 171 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupViewController.m; sourceTree = "<group>"; };
170 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupViewController.xib; sourceTree = "<group>"; }; 172 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupViewController.xib; sourceTree = "<group>"; };
171 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupTableViewCell.h; sourceTree = "<group>"; }; 173 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchGroupTableViewCell.h; sourceTree = "<group>"; };
172 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupTableViewCell.m; sourceTree = "<group>"; }; 174 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchGroupTableViewCell.m; sourceTree = "<group>"; };
173 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupTableViewCell.xib; sourceTree = "<group>"; }; 175 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchGroupTableViewCell.xib; sourceTree = "<group>"; };
174 E933E6721F3E0E4E002926F5 /* GroupObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupObject.h; sourceTree = "<group>"; }; 176 E933E6721F3E0E4E002926F5 /* GroupObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupObject.h; sourceTree = "<group>"; };
175 E933E6731F3E0E4E002926F5 /* GroupObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupObject.m; sourceTree = "<group>"; }; 177 E933E6731F3E0E4E002926F5 /* GroupObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupObject.m; sourceTree = "<group>"; };
176 E933E6761F40513C002926F5 /* GroupDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupDetailViewController.h; sourceTree = "<group>"; }; 178 E933E6761F40513C002926F5 /* GroupDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupDetailViewController.h; sourceTree = "<group>"; };
177 E933E6771F40513C002926F5 /* GroupDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupDetailViewController.m; sourceTree = "<group>"; }; 179 E933E6771F40513C002926F5 /* GroupDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupDetailViewController.m; sourceTree = "<group>"; };
178 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupDetailViewController.xib; sourceTree = "<group>"; }; 180 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupDetailViewController.xib; sourceTree = "<group>"; };
179 E9373E451F3596940059355A /* AutoTransLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransLabel.h; sourceTree = "<group>"; }; 181 E9373E451F3596940059355A /* AutoTransLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransLabel.h; sourceTree = "<group>"; };
180 E9373E461F3596940059355A /* AutoTransLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransLabel.m; sourceTree = "<group>"; }; 182 E9373E461F3596940059355A /* AutoTransLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransLabel.m; sourceTree = "<group>"; };
181 E9373E481F35AA180059355A /* HistoryObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryObject.h; sourceTree = "<group>"; }; 183 E9373E481F35AA180059355A /* HistoryObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryObject.h; sourceTree = "<group>"; };
182 E9373E491F35AA180059355A /* HistoryObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryObject.m; sourceTree = "<group>"; }; 184 E9373E491F35AA180059355A /* HistoryObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryObject.m; sourceTree = "<group>"; };
183 E9373E4B1F361A230059355A /* HistoryGraphObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryGraphObject.h; sourceTree = "<group>"; }; 185 E9373E4B1F361A230059355A /* HistoryGraphObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryGraphObject.h; sourceTree = "<group>"; };
184 E9373E4C1F361A230059355A /* HistoryGraphObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryGraphObject.m; sourceTree = "<group>"; }; 186 E9373E4C1F361A230059355A /* HistoryGraphObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryGraphObject.m; sourceTree = "<group>"; };
185 E9497FD31F46EC1100E6AF8D /* MemberObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberObject.h; sourceTree = "<group>"; }; 187 E9497FD31F46EC1100E6AF8D /* MemberObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemberObject.h; sourceTree = "<group>"; };
186 E9497FD41F46EC1100E6AF8D /* MemberObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MemberObject.m; sourceTree = "<group>"; }; 188 E9497FD41F46EC1100E6AF8D /* MemberObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MemberObject.m; sourceTree = "<group>"; };
189 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>"; };
191 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CreateGroupViewController.xib; sourceTree = "<group>"; };
187 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingTableViewCell.h; sourceTree = "<group>"; }; 192 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RankingTableViewCell.h; sourceTree = "<group>"; };
188 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingTableViewCell.m; sourceTree = "<group>"; }; 193 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RankingTableViewCell.m; sourceTree = "<group>"; };
189 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingTableViewCell.xib; sourceTree = "<group>"; }; 194 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RankingTableViewCell.xib; sourceTree = "<group>"; };
190 E96855081F3C444900317CEF /* AutoTransButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransButton.h; sourceTree = "<group>"; }; 195 E96855081F3C444900317CEF /* AutoTransButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoTransButton.h; sourceTree = "<group>"; };
191 E96855091F3C444900317CEF /* AutoTransButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransButton.m; sourceTree = "<group>"; }; 196 E96855091F3C444900317CEF /* AutoTransButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoTransButton.m; sourceTree = "<group>"; };
192 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSRecentTopicTableViewCell.h; sourceTree = "<group>"; }; 197 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNSRecentTopicTableViewCell.h; sourceTree = "<group>"; };
193 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSRecentTopicTableViewCell.m; sourceTree = "<group>"; }; 198 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SNSRecentTopicTableViewCell.m; sourceTree = "<group>"; };
194 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSRecentTopicTableViewCell.xib; sourceTree = "<group>"; }; 199 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SNSRecentTopicTableViewCell.xib; sourceTree = "<group>"; };
195 E997E0251F3AB66500709FB1 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; }; 200 E997E0251F3AB66500709FB1 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
196 E99E13A91F336F3600C78787 /* CollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionView.h; sourceTree = "<group>"; }; 201 E99E13A91F336F3600C78787 /* CollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionView.h; sourceTree = "<group>"; };
197 E99E13AA1F336F3600C78787 /* CollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionView.m; sourceTree = "<group>"; }; 202 E99E13AA1F336F3600C78787 /* CollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionView.m; sourceTree = "<group>"; };
198 E99E13AC1F336F4500C78787 /* CollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CollectionView.xib; sourceTree = "<group>"; }; 203 E99E13AC1F336F4500C78787 /* CollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CollectionView.xib; sourceTree = "<group>"; };
199 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelCollectionViewCell.h; sourceTree = "<group>"; }; 204 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelCollectionViewCell.h; sourceTree = "<group>"; };
200 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelCollectionViewCell.m; sourceTree = "<group>"; }; 205 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelCollectionViewCell.m; sourceTree = "<group>"; };
201 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LabelCollectionViewCell.xib; sourceTree = "<group>"; }; 206 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LabelCollectionViewCell.xib; sourceTree = "<group>"; };
202 E9D9091F1F3D559D004CF99F /* TweetObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TweetObject.h; sourceTree = "<group>"; }; 207 E9D9091F1F3D559D004CF99F /* TweetObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TweetObject.h; sourceTree = "<group>"; };
203 E9D909201F3D559D004CF99F /* TweetObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TweetObject.m; sourceTree = "<group>"; }; 208 E9D909201F3D559D004CF99F /* TweetObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TweetObject.m; sourceTree = "<group>"; };
204 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTableViewController.h; sourceTree = "<group>"; }; 209 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseTableViewController.h; sourceTree = "<group>"; };
205 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseTableViewController.m; sourceTree = "<group>"; }; 210 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseTableViewController.m; sourceTree = "<group>"; };
206 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryListTableViewCell.h; sourceTree = "<group>"; }; 211 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryListTableViewCell.h; sourceTree = "<group>"; };
207 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryListTableViewCell.m; sourceTree = "<group>"; }; 212 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryListTableViewCell.m; sourceTree = "<group>"; };
208 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryListTableViewCell.xib; sourceTree = "<group>"; }; 213 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryListTableViewCell.xib; sourceTree = "<group>"; };
209 /* End PBXFileReference section */ 214 /* End PBXFileReference section */
210 215
211 /* Begin PBXFrameworksBuildPhase section */ 216 /* Begin PBXFrameworksBuildPhase section */
212 6E84E36E1F27A700001EB88E /* Frameworks */ = { 217 6E84E36E1F27A700001EB88E /* Frameworks */ = {
213 isa = PBXFrameworksBuildPhase; 218 isa = PBXFrameworksBuildPhase;
214 buildActionMask = 2147483647; 219 buildActionMask = 2147483647;
215 files = ( 220 files = (
216 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */, 221 E997E0261F3AB66500709FB1 /* Social.framework in Frameworks */,
217 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */, 222 011799F0F2B47D80472673CE /* Pods_LifeLog.framework in Frameworks */,
218 ); 223 );
219 runOnlyForDeploymentPostprocessing = 0; 224 runOnlyForDeploymentPostprocessing = 0;
220 }; 225 };
221 6E84E3871F27A703001EB88E /* Frameworks */ = { 226 6E84E3871F27A703001EB88E /* Frameworks */ = {
222 isa = PBXFrameworksBuildPhase; 227 isa = PBXFrameworksBuildPhase;
223 buildActionMask = 2147483647; 228 buildActionMask = 2147483647;
224 files = ( 229 files = (
225 ); 230 );
226 runOnlyForDeploymentPostprocessing = 0; 231 runOnlyForDeploymentPostprocessing = 0;
227 }; 232 };
228 6E84E3921F27A703001EB88E /* Frameworks */ = { 233 6E84E3921F27A703001EB88E /* Frameworks */ = {
229 isa = PBXFrameworksBuildPhase; 234 isa = PBXFrameworksBuildPhase;
230 buildActionMask = 2147483647; 235 buildActionMask = 2147483647;
231 files = ( 236 files = (
232 ); 237 );
233 runOnlyForDeploymentPostprocessing = 0; 238 runOnlyForDeploymentPostprocessing = 0;
234 }; 239 };
235 /* End PBXFrameworksBuildPhase section */ 240 /* End PBXFrameworksBuildPhase section */
236 241
237 /* Begin PBXGroup section */ 242 /* Begin PBXGroup section */
238 020C1721B642EF36F31E1BB4 /* Frameworks */ = { 243 020C1721B642EF36F31E1BB4 /* Frameworks */ = {
239 isa = PBXGroup; 244 isa = PBXGroup;
240 children = ( 245 children = (
241 E997E0251F3AB66500709FB1 /* Social.framework */, 246 E997E0251F3AB66500709FB1 /* Social.framework */,
242 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */, 247 2D9F4ED6F06C8F252B9EAF48 /* Pods_LifeLog.framework */,
243 ); 248 );
244 name = Frameworks; 249 name = Frameworks;
245 sourceTree = "<group>"; 250 sourceTree = "<group>";
246 }; 251 };
247 6E18CECF1F2E398C0029891F /* Login */ = { 252 6E18CECF1F2E398C0029891F /* Login */ = {
248 isa = PBXGroup; 253 isa = PBXGroup;
249 children = ( 254 children = (
250 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */, 255 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */,
251 6E18CED01F2E39DB0029891F /* LoginViewController.h */, 256 6E18CED01F2E39DB0029891F /* LoginViewController.h */,
252 6E18CED11F2E39DB0029891F /* LoginViewController.m */, 257 6E18CED11F2E39DB0029891F /* LoginViewController.m */,
253 6E18CED21F2E39DB0029891F /* LoginViewController.xib */, 258 6E18CED21F2E39DB0029891F /* LoginViewController.xib */,
254 ); 259 );
255 name = Login; 260 name = Login;
256 sourceTree = "<group>"; 261 sourceTree = "<group>";
257 }; 262 };
258 6E18CED51F2E3C0E0029891F /* ServerAPI */ = { 263 6E18CED51F2E3C0E0029891F /* ServerAPI */ = {
259 isa = PBXGroup; 264 isa = PBXGroup;
260 children = ( 265 children = (
261 6E18CED61F2E3C840029891F /* ServerAPI.h */, 266 6E18CED61F2E3C840029891F /* ServerAPI.h */,
262 6E18CED71F2E3C840029891F /* ServerAPI.m */, 267 6E18CED71F2E3C840029891F /* ServerAPI.m */,
263 ); 268 );
264 name = ServerAPI; 269 name = ServerAPI;
265 sourceTree = "<group>"; 270 sourceTree = "<group>";
266 }; 271 };
267 6E18CED91F2E40AE0029891F /* Model */ = { 272 6E18CED91F2E40AE0029891F /* Model */ = {
268 isa = PBXGroup; 273 isa = PBXGroup;
269 children = ( 274 children = (
270 6E18CEDD1F2E46570029891F /* Entities.h */, 275 6E18CEDD1F2E46570029891F /* Entities.h */,
271 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */, 276 6EA4AF2B1F40BB7A00F52CFE /* StepObject.h */,
272 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */, 277 6EA4AF2C1F40BB7A00F52CFE /* StepObject.m */,
273 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */, 278 6EA4AF2D1F40BB7A00F52CFE /* TargetInfor.h */,
274 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */, 279 6EA4AF2E1F40BB7A00F52CFE /* TargetInfor.m */,
275 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */, 280 6EA4AF2F1F40BB7A00F52CFE /* TopObject.h */,
276 6EA4AF301F40BB7A00F52CFE /* TopObject.m */, 281 6EA4AF301F40BB7A00F52CFE /* TopObject.m */,
277 6E18CEDA1F2E40F50029891F /* User.h */, 282 6E18CEDA1F2E40F50029891F /* User.h */,
278 6E18CEDB1F2E40F50029891F /* User.m */, 283 6E18CEDB1F2E40F50029891F /* User.m */,
279 E9373E481F35AA180059355A /* HistoryObject.h */, 284 E9373E481F35AA180059355A /* HistoryObject.h */,
280 E9373E491F35AA180059355A /* HistoryObject.m */, 285 E9373E491F35AA180059355A /* HistoryObject.m */,
281 E9373E4B1F361A230059355A /* HistoryGraphObject.h */, 286 E9373E4B1F361A230059355A /* HistoryGraphObject.h */,
282 E9373E4C1F361A230059355A /* HistoryGraphObject.m */, 287 E9373E4C1F361A230059355A /* HistoryGraphObject.m */,
283 E9D9091F1F3D559D004CF99F /* TweetObject.h */, 288 E9D9091F1F3D559D004CF99F /* TweetObject.h */,
284 E9D909201F3D559D004CF99F /* TweetObject.m */, 289 E9D909201F3D559D004CF99F /* TweetObject.m */,
285 E933E6721F3E0E4E002926F5 /* GroupObject.h */, 290 E933E6721F3E0E4E002926F5 /* GroupObject.h */,
286 E933E6731F3E0E4E002926F5 /* GroupObject.m */, 291 E933E6731F3E0E4E002926F5 /* GroupObject.m */,
287 E9497FD31F46EC1100E6AF8D /* MemberObject.h */, 292 E9497FD31F46EC1100E6AF8D /* MemberObject.h */,
288 E9497FD41F46EC1100E6AF8D /* MemberObject.m */, 293 E9497FD41F46EC1100E6AF8D /* MemberObject.m */,
289 ); 294 );
290 name = Model; 295 name = Model;
291 sourceTree = "<group>"; 296 sourceTree = "<group>";
292 }; 297 };
293 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = { 298 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = {
294 isa = PBXGroup; 299 isa = PBXGroup;
295 children = ( 300 children = (
296 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */, 301 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */,
297 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */, 302 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */,
298 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */, 303 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */,
299 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */, 304 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */,
300 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */, 305 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */,
301 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */, 306 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */,
302 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */, 307 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */,
303 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */, 308 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */,
304 ); 309 );
305 name = TPKeyboardAvoiding; 310 name = TPKeyboardAvoiding;
306 sourceTree = "<group>"; 311 sourceTree = "<group>";
307 }; 312 };
308 6E84E3681F27A700001EB88E = { 313 6E84E3681F27A700001EB88E = {
309 isa = PBXGroup; 314 isa = PBXGroup;
310 children = ( 315 children = (
311 6E84E3731F27A700001EB88E /* LifeLog */, 316 6E84E3731F27A700001EB88E /* LifeLog */,
312 6E84E38D1F27A703001EB88E /* LifeLogTests */, 317 6E84E38D1F27A703001EB88E /* LifeLogTests */,
313 6E84E3981F27A703001EB88E /* LifeLogUITests */, 318 6E84E3981F27A703001EB88E /* LifeLogUITests */,
314 DE8269E957EA47CD771BAB33 /* Pods */, 319 DE8269E957EA47CD771BAB33 /* Pods */,
315 020C1721B642EF36F31E1BB4 /* Frameworks */, 320 020C1721B642EF36F31E1BB4 /* Frameworks */,
316 783929CF869F5081762B3DCA /* Products */, 321 783929CF869F5081762B3DCA /* Products */,
317 ); 322 );
318 sourceTree = "<group>"; 323 sourceTree = "<group>";
319 }; 324 };
320 6E84E3721F27A700001EB88E /* Products */ = { 325 6E84E3721F27A700001EB88E /* Products */ = {
321 isa = PBXGroup; 326 isa = PBXGroup;
322 children = ( 327 children = (
323 6E84E3711F27A700001EB88E /* LifeLog.app */, 328 6E84E3711F27A700001EB88E /* LifeLog.app */,
324 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */, 329 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */,
325 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */, 330 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */,
326 ); 331 );
327 name = Products; 332 name = Products;
328 sourceTree = "<group>"; 333 sourceTree = "<group>";
329 }; 334 };
330 6E84E3731F27A700001EB88E /* LifeLog */ = { 335 6E84E3731F27A700001EB88E /* LifeLog */ = {
331 isa = PBXGroup; 336 isa = PBXGroup;
332 children = ( 337 children = (
333 6E18CED91F2E40AE0029891F /* Model */, 338 6E18CED91F2E40AE0029891F /* Model */,
334 6E18CED51F2E3C0E0029891F /* ServerAPI */, 339 6E18CED51F2E3C0E0029891F /* ServerAPI */,
335 6EDC8BEB1F2C2F3300765ACC /* Common */, 340 6EDC8BEB1F2C2F3300765ACC /* Common */,
336 6ECC406D1F2A5FA500AAEB97 /* Library */, 341 6ECC406D1F2A5FA500AAEB97 /* Library */,
337 E99E13A71F336F0C00C78787 /* CustomView */, 342 E99E13A71F336F0C00C78787 /* CustomView */,
338 6E84E3A81F27A8A9001EB88E /* ViewControllers */, 343 6E84E3A81F27A8A9001EB88E /* ViewControllers */,
339 6E84E3A71F27A887001EB88E /* AppDelegate */, 344 6E84E3A71F27A887001EB88E /* AppDelegate */,
340 6E84E3801F27A701001EB88E /* Assets.xcassets */, 345 6E84E3801F27A701001EB88E /* Assets.xcassets */,
341 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */, 346 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */,
342 6E84E3851F27A701001EB88E /* Info.plist */, 347 6E84E3851F27A701001EB88E /* Info.plist */,
343 6E84E3741F27A701001EB88E /* Supporting Files */, 348 6E84E3741F27A701001EB88E /* Supporting Files */,
344 ); 349 );
345 path = LifeLog; 350 path = LifeLog;
346 sourceTree = "<group>"; 351 sourceTree = "<group>";
347 }; 352 };
348 6E84E3741F27A701001EB88E /* Supporting Files */ = { 353 6E84E3741F27A701001EB88E /* Supporting Files */ = {
349 isa = PBXGroup; 354 isa = PBXGroup;
350 children = ( 355 children = (
351 6E84E3751F27A701001EB88E /* main.m */, 356 6E84E3751F27A701001EB88E /* main.m */,
352 6EF163091F29069300DA306C /* Localizable.strings */, 357 6EF163091F29069300DA306C /* Localizable.strings */,
353 ); 358 );
354 name = "Supporting Files"; 359 name = "Supporting Files";
355 sourceTree = "<group>"; 360 sourceTree = "<group>";
356 }; 361 };
357 6E84E38D1F27A703001EB88E /* LifeLogTests */ = { 362 6E84E38D1F27A703001EB88E /* LifeLogTests */ = {
358 isa = PBXGroup; 363 isa = PBXGroup;
359 children = ( 364 children = (
360 6E84E38E1F27A703001EB88E /* LifeLogTests.m */, 365 6E84E38E1F27A703001EB88E /* LifeLogTests.m */,
361 6E84E3901F27A703001EB88E /* Info.plist */, 366 6E84E3901F27A703001EB88E /* Info.plist */,
362 ); 367 );
363 path = LifeLogTests; 368 path = LifeLogTests;
364 sourceTree = "<group>"; 369 sourceTree = "<group>";
365 }; 370 };
366 6E84E3981F27A703001EB88E /* LifeLogUITests */ = { 371 6E84E3981F27A703001EB88E /* LifeLogUITests */ = {
367 isa = PBXGroup; 372 isa = PBXGroup;
368 children = ( 373 children = (
369 6E84E3991F27A703001EB88E /* LifeLogUITests.m */, 374 6E84E3991F27A703001EB88E /* LifeLogUITests.m */,
370 6E84E39B1F27A703001EB88E /* Info.plist */, 375 6E84E39B1F27A703001EB88E /* Info.plist */,
371 ); 376 );
372 path = LifeLogUITests; 377 path = LifeLogUITests;
373 sourceTree = "<group>"; 378 sourceTree = "<group>";
374 }; 379 };
375 6E84E3A71F27A887001EB88E /* AppDelegate */ = { 380 6E84E3A71F27A887001EB88E /* AppDelegate */ = {
376 isa = PBXGroup; 381 isa = PBXGroup;
377 children = ( 382 children = (
378 6E84E3771F27A701001EB88E /* AppDelegate.h */, 383 6E84E3771F27A701001EB88E /* AppDelegate.h */,
379 6E84E3781F27A701001EB88E /* AppDelegate.m */, 384 6E84E3781F27A701001EB88E /* AppDelegate.m */,
380 ); 385 );
381 name = AppDelegate; 386 name = AppDelegate;
382 sourceTree = "<group>"; 387 sourceTree = "<group>";
383 }; 388 };
384 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = { 389 6E84E3A81F27A8A9001EB88E /* ViewControllers */ = {
385 isa = PBXGroup; 390 isa = PBXGroup;
386 children = ( 391 children = (
387 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */, 392 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */,
388 9CBDA0FB1F2F03490055DED1 /* Register */, 393 9CBDA0FB1F2F03490055DED1 /* Register */,
389 6E18CECF1F2E398C0029891F /* Login */, 394 6E18CECF1F2E398C0029891F /* Login */,
390 6E84E3AC1F27A954001EB88E /* SNS */, 395 6E84E3AC1F27A954001EB88E /* SNS */,
391 6E84E3C11F27AC89001EB88E /* Map */, 396 6E84E3C11F27AC89001EB88E /* Map */,
392 6E84E3AB1F27A946001EB88E /* Ranking */, 397 6E84E3AB1F27A946001EB88E /* Ranking */,
393 6E84E3AA1F27A924001EB88E /* History */, 398 6E84E3AA1F27A924001EB88E /* History */,
394 6E84E3A91F27A915001EB88E /* Home */, 399 6E84E3A91F27A915001EB88E /* Home */,
395 ); 400 );
396 name = ViewControllers; 401 name = ViewControllers;
397 sourceTree = "<group>"; 402 sourceTree = "<group>";
398 }; 403 };
399 6E84E3A91F27A915001EB88E /* Home */ = { 404 6E84E3A91F27A915001EB88E /* Home */ = {
400 isa = PBXGroup; 405 isa = PBXGroup;
401 children = ( 406 children = (
402 6E8DA0F31F2BAC0800CCE941 /* Today */, 407 6E8DA0F31F2BAC0800CCE941 /* Today */,
403 6E84E3AD1F27A975001EB88E /* HomeViewController.h */, 408 6E84E3AD1F27A975001EB88E /* HomeViewController.h */,
404 6E84E3AE1F27A975001EB88E /* HomeViewController.m */, 409 6E84E3AE1F27A975001EB88E /* HomeViewController.m */,
405 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */, 410 6E84E3AF1F27A975001EB88E /* HomeViewController.xib */,
406 ); 411 );
407 name = Home; 412 name = Home;
408 sourceTree = "<group>"; 413 sourceTree = "<group>";
409 }; 414 };
410 6E84E3AA1F27A924001EB88E /* History */ = { 415 6E84E3AA1F27A924001EB88E /* History */ = {
411 isa = PBXGroup; 416 isa = PBXGroup;
412 children = ( 417 children = (
413 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */, 418 6E84E3B21F27A98B001EB88E /* HistoryViewController.h */,
414 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */, 419 6E84E3B31F27A98B001EB88E /* HistoryViewController.m */,
415 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */, 420 6E84E3B41F27A98B001EB88E /* HistoryViewController.xib */,
416 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */, 421 E9F73DC91F338A0F004A3A6F /* HistoryListTableViewCell.h */,
417 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */, 422 E9F73DCA1F338A0F004A3A6F /* HistoryListTableViewCell.m */,
418 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */, 423 E9F73DCB1F338A0F004A3A6F /* HistoryListTableViewCell.xib */,
419 ); 424 );
420 name = History; 425 name = History;
421 sourceTree = "<group>"; 426 sourceTree = "<group>";
422 }; 427 };
423 6E84E3AB1F27A946001EB88E /* Ranking */ = { 428 6E84E3AB1F27A946001EB88E /* Ranking */ = {
424 isa = PBXGroup; 429 isa = PBXGroup;
425 children = ( 430 children = (
426 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */, 431 6E84E3B71F27A9A0001EB88E /* RankingViewController.h */,
427 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */, 432 6E84E3B81F27A9A0001EB88E /* RankingViewController.m */,
428 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */, 433 6E84E3B91F27A9A0001EB88E /* RankingViewController.xib */,
429 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */, 434 E9682E2B1F39675A00FE05A2 /* RankingTableViewCell.h */,
430 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */, 435 E9682E2C1F39675A00FE05A2 /* RankingTableViewCell.m */,
431 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */, 436 E9682E2D1F39675A00FE05A2 /* RankingTableViewCell.xib */,
432 ); 437 );
433 name = Ranking; 438 name = Ranking;
434 sourceTree = "<group>"; 439 sourceTree = "<group>";
435 }; 440 };
436 6E84E3AC1F27A954001EB88E /* SNS */ = { 441 6E84E3AC1F27A954001EB88E /* SNS */ = {
437 isa = PBXGroup; 442 isa = PBXGroup;
438 children = ( 443 children = (
444 E95F4CE91F475C4B00D27E80 /* CreateGroup */,
439 E933E6751F4050E6002926F5 /* GroupDetail */, 445 E933E6751F4050E6002926F5 /* GroupDetail */,
440 E933E6671F3E0479002926F5 /* SeachGroup */, 446 E933E6671F3E0479002926F5 /* SeachGroup */,
441 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */, 447 6E84E3BC1F27A9B1001EB88E /* SNSViewController.h */,
442 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */, 448 6E84E3BD1F27A9B1001EB88E /* SNSViewController.m */,
443 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */, 449 6E84E3BE1F27A9B1001EB88E /* SNSViewController.xib */,
444 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */, 450 E968550E1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.h */,
445 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */, 451 E968550F1F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m */,
446 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */, 452 E96855101F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib */,
447 ); 453 );
448 name = SNS; 454 name = SNS;
449 sourceTree = "<group>"; 455 sourceTree = "<group>";
450 }; 456 };
451 6E84E3C11F27AC89001EB88E /* Map */ = { 457 6E84E3C11F27AC89001EB88E /* Map */ = {
452 isa = PBXGroup; 458 isa = PBXGroup;
453 children = ( 459 children = (
454 6E84E3C21F27ACAE001EB88E /* MapViewController.h */, 460 6E84E3C21F27ACAE001EB88E /* MapViewController.h */,
455 6E84E3C31F27ACAE001EB88E /* MapViewController.m */, 461 6E84E3C31F27ACAE001EB88E /* MapViewController.m */,
456 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */, 462 6E84E3C41F27ACAE001EB88E /* MapViewController.xib */,
457 ); 463 );
458 name = Map; 464 name = Map;
459 sourceTree = "<group>"; 465 sourceTree = "<group>";
460 }; 466 };
461 6E8DA0F31F2BAC0800CCE941 /* Today */ = { 467 6E8DA0F31F2BAC0800CCE941 /* Today */ = {
462 isa = PBXGroup; 468 isa = PBXGroup;
463 children = ( 469 children = (
464 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */, 470 6E8DA0F41F2BAC3400CCE941 /* TodayViewController.h */,
465 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */, 471 6E8DA0F51F2BAC3400CCE941 /* TodayViewController.m */,
466 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */, 472 6E8DA0F61F2BAC3400CCE941 /* TodayViewController.xib */,
467 ); 473 );
468 name = Today; 474 name = Today;
469 sourceTree = "<group>"; 475 sourceTree = "<group>";
470 }; 476 };
471 6ECC406D1F2A5FA500AAEB97 /* Library */ = { 477 6ECC406D1F2A5FA500AAEB97 /* Library */ = {
472 isa = PBXGroup; 478 isa = PBXGroup;
473 children = ( 479 children = (
474 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */, 480 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */,
475 6ECC406E1F2A5FB200AAEB97 /* Category */, 481 6ECC406E1F2A5FB200AAEB97 /* Category */,
476 ); 482 );
477 name = Library; 483 name = Library;
478 sourceTree = "<group>"; 484 sourceTree = "<group>";
479 }; 485 };
480 6ECC406E1F2A5FB200AAEB97 /* Category */ = { 486 6ECC406E1F2A5FB200AAEB97 /* Category */ = {
481 isa = PBXGroup; 487 isa = PBXGroup;
482 children = ( 488 children = (
483 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */, 489 6ECC406F1F2A5FEB00AAEB97 /* NSDate+helper.h */,
484 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */, 490 6ECC40701F2A5FEB00AAEB97 /* NSDate+helper.m */,
485 ); 491 );
486 name = Category; 492 name = Category;
487 sourceTree = "<group>"; 493 sourceTree = "<group>";
488 }; 494 };
489 6EDC8BEB1F2C2F3300765ACC /* Common */ = { 495 6EDC8BEB1F2C2F3300765ACC /* Common */ = {
490 isa = PBXGroup; 496 isa = PBXGroup;
491 children = ( 497 children = (
492 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */, 498 6EDC8BEC1F2C2FB800765ACC /* Utilities.h */,
493 6EDC8BED1F2C2FB800765ACC /* Utilities.m */, 499 6EDC8BED1F2C2FB800765ACC /* Utilities.m */,
494 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */, 500 6EDC8BF21F2C68D700765ACC /* CMMotionActivityExtra.h */,
495 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */, 501 6EDC8BF31F2C68D700765ACC /* CMMotionActivityExtra.m */,
496 ); 502 );
497 name = Common; 503 name = Common;
498 sourceTree = "<group>"; 504 sourceTree = "<group>";
499 }; 505 };
500 783929CF869F5081762B3DCA /* Products */ = { 506 783929CF869F5081762B3DCA /* Products */ = {
501 isa = PBXGroup; 507 isa = PBXGroup;
502 children = ( 508 children = (
503 ); 509 );
504 name = Products; 510 name = Products;
505 sourceTree = "<group>"; 511 sourceTree = "<group>";
506 }; 512 };
507 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = { 513 9CA8AEE61F31BB1200C5FC74 /* ConfirmForgetPass */ = {
508 isa = PBXGroup; 514 isa = PBXGroup;
509 children = ( 515 children = (
510 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */, 516 9CA8AEE71F31BB4600C5FC74 /* ConfirmForgetPassViewController.h */,
511 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */, 517 9CA8AEE81F31BB4600C5FC74 /* ConfirmForgetPassViewController.m */,
512 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */, 518 9CA8AEE91F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib */,
513 ); 519 );
514 name = ConfirmForgetPass; 520 name = ConfirmForgetPass;
515 sourceTree = "<group>"; 521 sourceTree = "<group>";
516 }; 522 };
517 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = { 523 9CBDA0F71F2ECDFD0055DED1 /* BaseViewController */ = {
518 isa = PBXGroup; 524 isa = PBXGroup;
519 children = ( 525 children = (
520 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */, 526 9CBDA0F81F2ECE2C0055DED1 /* BaseViewController.h */,
521 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */, 527 9CBDA0F91F2ECE2C0055DED1 /* BaseViewController.m */,
522 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */, 528 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */,
523 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */, 529 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */,
524 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */, 530 E9D909221F3D6E8C004CF99F /* BaseTableViewController.h */,
525 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */, 531 E9D909231F3D6E8C004CF99F /* BaseTableViewController.m */,
526 ); 532 );
527 name = BaseViewController; 533 name = BaseViewController;
528 sourceTree = "<group>"; 534 sourceTree = "<group>";
529 }; 535 };
530 9CBDA0FB1F2F03490055DED1 /* Register */ = { 536 9CBDA0FB1F2F03490055DED1 /* Register */ = {
531 isa = PBXGroup; 537 isa = PBXGroup;
532 children = ( 538 children = (
533 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */, 539 9CBDA0FC1F2F03810055DED1 /* RegisterViewController.h */,
534 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */, 540 9CBDA0FD1F2F03810055DED1 /* RegisterViewController.m */,
535 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */, 541 9CBDA0FE1F2F03810055DED1 /* RegisterViewController.xib */,
536 ); 542 );
537 name = Register; 543 name = Register;
538 sourceTree = "<group>"; 544 sourceTree = "<group>";
539 }; 545 };
540 DE8269E957EA47CD771BAB33 /* Pods */ = { 546 DE8269E957EA47CD771BAB33 /* Pods */ = {
541 isa = PBXGroup; 547 isa = PBXGroup;
542 children = ( 548 children = (
543 6E84E3721F27A700001EB88E /* Products */, 549 6E84E3721F27A700001EB88E /* Products */,
544 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */, 550 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */,
545 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */, 551 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */,
546 ); 552 );
547 name = Pods; 553 name = Pods;
548 sourceTree = "<group>"; 554 sourceTree = "<group>";
549 }; 555 };
550 E933E6671F3E0479002926F5 /* SeachGroup */ = { 556 E933E6671F3E0479002926F5 /* SeachGroup */ = {
551 isa = PBXGroup; 557 isa = PBXGroup;
552 children = ( 558 children = (
553 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */, 559 E933E6681F3E04A6002926F5 /* SearchGroupViewController.h */,
554 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */, 560 E933E6691F3E04A6002926F5 /* SearchGroupViewController.m */,
555 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */, 561 E933E66A1F3E04A6002926F5 /* SearchGroupViewController.xib */,
556 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */, 562 E933E66D1F3E09B6002926F5 /* SearchGroupTableViewCell.h */,
557 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */, 563 E933E66E1F3E09B6002926F5 /* SearchGroupTableViewCell.m */,
558 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */, 564 E933E66F1F3E09B6002926F5 /* SearchGroupTableViewCell.xib */,
559 ); 565 );
560 name = SeachGroup; 566 name = SeachGroup;
561 sourceTree = "<group>"; 567 sourceTree = "<group>";
562 }; 568 };
563 E933E6751F4050E6002926F5 /* GroupDetail */ = { 569 E933E6751F4050E6002926F5 /* GroupDetail */ = {
564 isa = PBXGroup; 570 isa = PBXGroup;
565 children = ( 571 children = (
566 E933E6761F40513C002926F5 /* GroupDetailViewController.h */, 572 E933E6761F40513C002926F5 /* GroupDetailViewController.h */,
567 E933E6771F40513C002926F5 /* GroupDetailViewController.m */, 573 E933E6771F40513C002926F5 /* GroupDetailViewController.m */,
568 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */, 574 E933E6781F40513C002926F5 /* GroupDetailViewController.xib */,
569 ); 575 );
570 name = GroupDetail; 576 name = GroupDetail;
571 sourceTree = "<group>"; 577 sourceTree = "<group>";
572 }; 578 };
573 E9373E441F35966D0059355A /* AutoTranslateView */ = { 579 E9373E441F35966D0059355A /* AutoTranslateView */ = {
574 isa = PBXGroup; 580 isa = PBXGroup;
575 children = ( 581 children = (
576 E9373E451F3596940059355A /* AutoTransLabel.h */, 582 E9373E451F3596940059355A /* AutoTransLabel.h */,
577 E9373E461F3596940059355A /* AutoTransLabel.m */, 583 E9373E461F3596940059355A /* AutoTransLabel.m */,
578 E96855081F3C444900317CEF /* AutoTransButton.h */, 584 E96855081F3C444900317CEF /* AutoTransButton.h */,
579 E96855091F3C444900317CEF /* AutoTransButton.m */, 585 E96855091F3C444900317CEF /* AutoTransButton.m */,
580 ); 586 );
581 name = AutoTranslateView; 587 name = AutoTranslateView;
582 sourceTree = "<group>"; 588 sourceTree = "<group>";
583 }; 589 };
590 E95F4CE91F475C4B00D27E80 /* CreateGroup */ = {
591 isa = PBXGroup;
592 children = (
593 E95F4CEA1F475C6A00D27E80 /* CreateGroupViewController.h */,
594 E95F4CEB1F475C6A00D27E80 /* CreateGroupViewController.m */,
595 E95F4CEC1F475C6A00D27E80 /* CreateGroupViewController.xib */,
596 );
597 name = CreateGroup;
598 sourceTree = "<group>";
599 };
584 E99E13A71F336F0C00C78787 /* CustomView */ = { 600 E99E13A71F336F0C00C78787 /* CustomView */ = {
585 isa = PBXGroup; 601 isa = PBXGroup;
586 children = ( 602 children = (
587 E9373E441F35966D0059355A /* AutoTranslateView */, 603 E9373E441F35966D0059355A /* AutoTranslateView */,
588 E99E13A81F336F1700C78787 /* CollectionView */, 604 E99E13A81F336F1700C78787 /* CollectionView */,
589 ); 605 );
590 name = CustomView; 606 name = CustomView;
591 sourceTree = "<group>"; 607 sourceTree = "<group>";
592 }; 608 };
593 E99E13A81F336F1700C78787 /* CollectionView */ = { 609 E99E13A81F336F1700C78787 /* CollectionView */ = {
594 isa = PBXGroup; 610 isa = PBXGroup;
595 children = ( 611 children = (
596 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */, 612 E99E13AE1F33720600C78787 /* LabelCollectionViewCell.h */,
597 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */, 613 E99E13AF1F33720600C78787 /* LabelCollectionViewCell.m */,
598 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */, 614 E99E13B01F33720600C78787 /* LabelCollectionViewCell.xib */,
599 E99E13A91F336F3600C78787 /* CollectionView.h */, 615 E99E13A91F336F3600C78787 /* CollectionView.h */,
600 E99E13AA1F336F3600C78787 /* CollectionView.m */, 616 E99E13AA1F336F3600C78787 /* CollectionView.m */,
601 E99E13AC1F336F4500C78787 /* CollectionView.xib */, 617 E99E13AC1F336F4500C78787 /* CollectionView.xib */,
602 ); 618 );
603 name = CollectionView; 619 name = CollectionView;
604 sourceTree = "<group>"; 620 sourceTree = "<group>";
605 }; 621 };
606 /* End PBXGroup section */ 622 /* End PBXGroup section */
607 623
608 /* Begin PBXNativeTarget section */ 624 /* Begin PBXNativeTarget section */
609 6E84E3701F27A700001EB88E /* LifeLog */ = { 625 6E84E3701F27A700001EB88E /* LifeLog */ = {
610 isa = PBXNativeTarget; 626 isa = PBXNativeTarget;
611 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */; 627 buildConfigurationList = 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */;
612 buildPhases = ( 628 buildPhases = (
613 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */, 629 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */,
614 6E84E36D1F27A700001EB88E /* Sources */, 630 6E84E36D1F27A700001EB88E /* Sources */,
615 6E84E36E1F27A700001EB88E /* Frameworks */, 631 6E84E36E1F27A700001EB88E /* Frameworks */,
616 6E84E36F1F27A700001EB88E /* Resources */, 632 6E84E36F1F27A700001EB88E /* Resources */,
617 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */, 633 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */,
618 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */, 634 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */,
619 ); 635 );
620 buildRules = ( 636 buildRules = (
621 ); 637 );
622 dependencies = ( 638 dependencies = (
623 ); 639 );
624 name = LifeLog; 640 name = LifeLog;
625 productName = LifeLog; 641 productName = LifeLog;
626 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */; 642 productReference = 6E84E3711F27A700001EB88E /* LifeLog.app */;
627 productType = "com.apple.product-type.application"; 643 productType = "com.apple.product-type.application";
628 }; 644 };
629 6E84E3891F27A703001EB88E /* LifeLogTests */ = { 645 6E84E3891F27A703001EB88E /* LifeLogTests */ = {
630 isa = PBXNativeTarget; 646 isa = PBXNativeTarget;
631 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */; 647 buildConfigurationList = 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */;
632 buildPhases = ( 648 buildPhases = (
633 6E84E3861F27A703001EB88E /* Sources */, 649 6E84E3861F27A703001EB88E /* Sources */,
634 6E84E3871F27A703001EB88E /* Frameworks */, 650 6E84E3871F27A703001EB88E /* Frameworks */,
635 6E84E3881F27A703001EB88E /* Resources */, 651 6E84E3881F27A703001EB88E /* Resources */,
636 ); 652 );
637 buildRules = ( 653 buildRules = (
638 ); 654 );
639 dependencies = ( 655 dependencies = (
640 6E84E38C1F27A703001EB88E /* PBXTargetDependency */, 656 6E84E38C1F27A703001EB88E /* PBXTargetDependency */,
641 ); 657 );
642 name = LifeLogTests; 658 name = LifeLogTests;
643 productName = LifeLogTests; 659 productName = LifeLogTests;
644 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */; 660 productReference = 6E84E38A1F27A703001EB88E /* LifeLogTests.xctest */;
645 productType = "com.apple.product-type.bundle.unit-test"; 661 productType = "com.apple.product-type.bundle.unit-test";
646 }; 662 };
647 6E84E3941F27A703001EB88E /* LifeLogUITests */ = { 663 6E84E3941F27A703001EB88E /* LifeLogUITests */ = {
648 isa = PBXNativeTarget; 664 isa = PBXNativeTarget;
649 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */; 665 buildConfigurationList = 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */;
650 buildPhases = ( 666 buildPhases = (
651 6E84E3911F27A703001EB88E /* Sources */, 667 6E84E3911F27A703001EB88E /* Sources */,
652 6E84E3921F27A703001EB88E /* Frameworks */, 668 6E84E3921F27A703001EB88E /* Frameworks */,
653 6E84E3931F27A703001EB88E /* Resources */, 669 6E84E3931F27A703001EB88E /* Resources */,
654 ); 670 );
655 buildRules = ( 671 buildRules = (
656 ); 672 );
657 dependencies = ( 673 dependencies = (
658 6E84E3971F27A703001EB88E /* PBXTargetDependency */, 674 6E84E3971F27A703001EB88E /* PBXTargetDependency */,
659 ); 675 );
660 name = LifeLogUITests; 676 name = LifeLogUITests;
661 productName = LifeLogUITests; 677 productName = LifeLogUITests;
662 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */; 678 productReference = 6E84E3951F27A703001EB88E /* LifeLogUITests.xctest */;
663 productType = "com.apple.product-type.bundle.ui-testing"; 679 productType = "com.apple.product-type.bundle.ui-testing";
664 }; 680 };
665 /* End PBXNativeTarget section */ 681 /* End PBXNativeTarget section */
666 682
667 /* Begin PBXProject section */ 683 /* Begin PBXProject section */
668 6E84E3691F27A700001EB88E /* Project object */ = { 684 6E84E3691F27A700001EB88E /* Project object */ = {
669 isa = PBXProject; 685 isa = PBXProject;
670 attributes = { 686 attributes = {
671 LastUpgradeCheck = 0830; 687 LastUpgradeCheck = 0830;
672 ORGANIZATIONNAME = PhongNV; 688 ORGANIZATIONNAME = PhongNV;
673 TargetAttributes = { 689 TargetAttributes = {
674 6E84E3701F27A700001EB88E = { 690 6E84E3701F27A700001EB88E = {
675 CreatedOnToolsVersion = 8.3.3; 691 CreatedOnToolsVersion = 8.3.3;
676 DevelopmentTeam = UXU4V3VUN4; 692 DevelopmentTeam = UXU4V3VUN4;
677 ProvisioningStyle = Automatic; 693 ProvisioningStyle = Automatic;
678 }; 694 };
679 6E84E3891F27A703001EB88E = { 695 6E84E3891F27A703001EB88E = {
680 CreatedOnToolsVersion = 8.3.3; 696 CreatedOnToolsVersion = 8.3.3;
681 ProvisioningStyle = Automatic; 697 ProvisioningStyle = Automatic;
682 TestTargetID = 6E84E3701F27A700001EB88E; 698 TestTargetID = 6E84E3701F27A700001EB88E;
683 }; 699 };
684 6E84E3941F27A703001EB88E = { 700 6E84E3941F27A703001EB88E = {
685 CreatedOnToolsVersion = 8.3.3; 701 CreatedOnToolsVersion = 8.3.3;
686 ProvisioningStyle = Automatic; 702 ProvisioningStyle = Automatic;
687 TestTargetID = 6E84E3701F27A700001EB88E; 703 TestTargetID = 6E84E3701F27A700001EB88E;
688 }; 704 };
689 }; 705 };
690 }; 706 };
691 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */; 707 buildConfigurationList = 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */;
692 compatibilityVersion = "Xcode 3.2"; 708 compatibilityVersion = "Xcode 3.2";
693 developmentRegion = English; 709 developmentRegion = English;
694 hasScannedForEncodings = 0; 710 hasScannedForEncodings = 0;
695 knownRegions = ( 711 knownRegions = (
696 en, 712 en,
697 Base, 713 Base,
698 ); 714 );
699 mainGroup = 6E84E3681F27A700001EB88E; 715 mainGroup = 6E84E3681F27A700001EB88E;
700 productRefGroup = 783929CF869F5081762B3DCA /* Products */; 716 productRefGroup = 783929CF869F5081762B3DCA /* Products */;
701 projectDirPath = ""; 717 projectDirPath = "";
702 projectRoot = ""; 718 projectRoot = "";
703 targets = ( 719 targets = (
704 6E84E3701F27A700001EB88E /* LifeLog */, 720 6E84E3701F27A700001EB88E /* LifeLog */,
705 6E84E3891F27A703001EB88E /* LifeLogTests */, 721 6E84E3891F27A703001EB88E /* LifeLogTests */,
706 6E84E3941F27A703001EB88E /* LifeLogUITests */, 722 6E84E3941F27A703001EB88E /* LifeLogUITests */,
707 ); 723 );
708 }; 724 };
709 /* End PBXProject section */ 725 /* End PBXProject section */
710 726
711 /* Begin PBXResourcesBuildPhase section */ 727 /* Begin PBXResourcesBuildPhase section */
712 6E84E36F1F27A700001EB88E /* Resources */ = { 728 6E84E36F1F27A700001EB88E /* Resources */ = {
713 isa = PBXResourcesBuildPhase; 729 isa = PBXResourcesBuildPhase;
714 buildActionMask = 2147483647; 730 buildActionMask = 2147483647;
715 files = ( 731 files = (
716 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */, 732 9CBDA1001F2F03810055DED1 /* RegisterViewController.xib in Resources */,
733 E95F4CEE1F475C6A00D27E80 /* CreateGroupViewController.xib in Resources */,
717 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */, 734 6E18CED41F2E39DB0029891F /* LoginViewController.xib in Resources */,
718 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */, 735 E99E13AD1F336F4500C78787 /* CollectionView.xib in Resources */,
719 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */, 736 6E84E3BB1F27A9A0001EB88E /* RankingViewController.xib in Resources */,
720 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */, 737 9CA8AEEB1F31BB4600C5FC74 /* ConfirmForgetPassViewController.xib in Resources */,
721 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */, 738 6E84E3C01F27A9B1001EB88E /* SNSViewController.xib in Resources */,
722 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */, 739 E9682E2F1F39675A00FE05A2 /* RankingTableViewCell.xib in Resources */,
723 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */, 740 E933E6711F3E09B6002926F5 /* SearchGroupTableViewCell.xib in Resources */,
724 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */, 741 6E8DA0F81F2BAC3500CCE941 /* TodayViewController.xib in Resources */,
725 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */, 742 6E84E3841F27A701001EB88E /* LaunchScreen.storyboard in Resources */,
726 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */, 743 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */,
727 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */, 744 6E84E3C61F27ACAE001EB88E /* MapViewController.xib in Resources */,
728 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */, 745 6EF1630A1F29069300DA306C /* Localizable.strings in Resources */,
729 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */, 746 6E84E3B11F27A975001EB88E /* HomeViewController.xib in Resources */,
730 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */, 747 6E84E3B61F27A98B001EB88E /* HistoryViewController.xib in Resources */,
731 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */, 748 E933E66C1F3E04A6002926F5 /* SearchGroupViewController.xib in Resources */,
732 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */, 749 E96855121F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.xib in Resources */,
733 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */, 750 E933E67A1F40513C002926F5 /* GroupDetailViewController.xib in Resources */,
734 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */, 751 E99E13B21F33720600C78787 /* LabelCollectionViewCell.xib in Resources */,
735 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */, 752 E9F73DCD1F338A0F004A3A6F /* HistoryListTableViewCell.xib in Resources */,
736 ); 753 );
737 runOnlyForDeploymentPostprocessing = 0; 754 runOnlyForDeploymentPostprocessing = 0;
738 }; 755 };
739 6E84E3881F27A703001EB88E /* Resources */ = { 756 6E84E3881F27A703001EB88E /* Resources */ = {
740 isa = PBXResourcesBuildPhase; 757 isa = PBXResourcesBuildPhase;
741 buildActionMask = 2147483647; 758 buildActionMask = 2147483647;
742 files = ( 759 files = (
743 ); 760 );
744 runOnlyForDeploymentPostprocessing = 0; 761 runOnlyForDeploymentPostprocessing = 0;
745 }; 762 };
746 6E84E3931F27A703001EB88E /* Resources */ = { 763 6E84E3931F27A703001EB88E /* Resources */ = {
747 isa = PBXResourcesBuildPhase; 764 isa = PBXResourcesBuildPhase;
748 buildActionMask = 2147483647; 765 buildActionMask = 2147483647;
749 files = ( 766 files = (
750 ); 767 );
751 runOnlyForDeploymentPostprocessing = 0; 768 runOnlyForDeploymentPostprocessing = 0;
752 }; 769 };
753 /* End PBXResourcesBuildPhase section */ 770 /* End PBXResourcesBuildPhase section */
754 771
755 /* Begin PBXShellScriptBuildPhase section */ 772 /* Begin PBXShellScriptBuildPhase section */
756 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = { 773 22F89B11794CEB4E265996AC /* [CP] Embed Pods Frameworks */ = {
757 isa = PBXShellScriptBuildPhase; 774 isa = PBXShellScriptBuildPhase;
758 buildActionMask = 2147483647; 775 buildActionMask = 2147483647;
759 files = ( 776 files = (
760 ); 777 );
761 inputPaths = ( 778 inputPaths = (
762 ); 779 );
763 name = "[CP] Embed Pods Frameworks"; 780 name = "[CP] Embed Pods Frameworks";
764 outputPaths = ( 781 outputPaths = (
765 ); 782 );
766 runOnlyForDeploymentPostprocessing = 0; 783 runOnlyForDeploymentPostprocessing = 0;
767 shellPath = /bin/sh; 784 shellPath = /bin/sh;
768 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-frameworks.sh\"\n"; 785 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-frameworks.sh\"\n";
769 showEnvVarsInLog = 0; 786 showEnvVarsInLog = 0;
770 }; 787 };
771 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = { 788 2BB22CAEC0728AA1E086BCE3 /* [CP] Check Pods Manifest.lock */ = {
772 isa = PBXShellScriptBuildPhase; 789 isa = PBXShellScriptBuildPhase;
773 buildActionMask = 2147483647; 790 buildActionMask = 2147483647;
774 files = ( 791 files = (
775 ); 792 );
776 inputPaths = ( 793 inputPaths = (
777 ); 794 );
778 name = "[CP] Check Pods Manifest.lock"; 795 name = "[CP] Check Pods Manifest.lock";
779 outputPaths = ( 796 outputPaths = (
780 ); 797 );
781 runOnlyForDeploymentPostprocessing = 0; 798 runOnlyForDeploymentPostprocessing = 0;
782 shellPath = /bin/sh; 799 shellPath = /bin/sh;
783 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"; 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";
784 showEnvVarsInLog = 0; 801 showEnvVarsInLog = 0;
785 }; 802 };
786 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = { 803 96653BDB2C24A87C2866C897 /* [CP] Copy Pods Resources */ = {
787 isa = PBXShellScriptBuildPhase; 804 isa = PBXShellScriptBuildPhase;
788 buildActionMask = 2147483647; 805 buildActionMask = 2147483647;
789 files = ( 806 files = (
790 ); 807 );
791 inputPaths = ( 808 inputPaths = (
792 ); 809 );
793 name = "[CP] Copy Pods Resources"; 810 name = "[CP] Copy Pods Resources";
794 outputPaths = ( 811 outputPaths = (
795 ); 812 );
796 runOnlyForDeploymentPostprocessing = 0; 813 runOnlyForDeploymentPostprocessing = 0;
797 shellPath = /bin/sh; 814 shellPath = /bin/sh;
798 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-resources.sh\"\n"; 815 shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LifeLog/Pods-LifeLog-resources.sh\"\n";
799 showEnvVarsInLog = 0; 816 showEnvVarsInLog = 0;
800 }; 817 };
801 /* End PBXShellScriptBuildPhase section */ 818 /* End PBXShellScriptBuildPhase section */
802 819
803 /* Begin PBXSourcesBuildPhase section */ 820 /* Begin PBXSourcesBuildPhase section */
804 6E84E36D1F27A700001EB88E /* Sources */ = { 821 6E84E36D1F27A700001EB88E /* Sources */ = {
805 isa = PBXSourcesBuildPhase; 822 isa = PBXSourcesBuildPhase;
806 buildActionMask = 2147483647; 823 buildActionMask = 2147483647;
807 files = ( 824 files = (
808 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */, 825 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */,
809 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */, 826 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */,
810 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */, 827 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */,
811 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */, 828 E968550A1F3C444900317CEF /* AutoTransButton.m in Sources */,
812 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */, 829 6EA4AF321F40BB7A00F52CFE /* TargetInfor.m in Sources */,
813 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */, 830 E933E6741F3E0E4E002926F5 /* GroupObject.m in Sources */,
814 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */, 831 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */,
815 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */, 832 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */,
816 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */, 833 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */,
817 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */, 834 E9682E2E1F39675A00FE05A2 /* RankingTableViewCell.m in Sources */,
818 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */, 835 E9D909211F3D559D004CF99F /* TweetObject.m in Sources */,
819 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */, 836 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */,
820 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */, 837 E99E13AB1F336F3600C78787 /* CollectionView.m in Sources */,
821 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */, 838 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */,
822 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */, 839 E9373E471F3596940059355A /* AutoTransLabel.m in Sources */,
823 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */, 840 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */,
824 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */, 841 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */,
825 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */, 842 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */,
826 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */, 843 E9F73DCC1F338A0F004A3A6F /* HistoryListTableViewCell.m in Sources */,
827 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */, 844 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */,
828 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */, 845 E933E6791F40513C002926F5 /* GroupDetailViewController.m in Sources */,
829 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */, 846 6EA4AF311F40BB7A00F52CFE /* StepObject.m in Sources */,
847 E95F4CED1F475C6A00D27E80 /* CreateGroupViewController.m in Sources */,
830 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */, 848 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */,
831 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */, 849 E9373E4A1F35AA180059355A /* HistoryObject.m in Sources */,
832 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */, 850 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */,
833 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */, 851 E99E13B11F33720600C78787 /* LabelCollectionViewCell.m in Sources */,
834 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */, 852 6EDC8BEE1F2C2FB800765ACC /* Utilities.m in Sources */,
835 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */, 853 E96855111F3C5D9A00317CEF /* SNSRecentTopicTableViewCell.m in Sources */,
836 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */, 854 6E84E3C51F27ACAE001EB88E /* MapViewController.m in Sources */,
837 6E18CEDC1F2E40F50029891F /* User.m in Sources */, 855 6E18CEDC1F2E40F50029891F /* User.m in Sources */,
838 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */, 856 6ECC40711F2A5FEB00AAEB97 /* NSDate+helper.m in Sources */,
839 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */, 857 E9497FD51F46EC1100E6AF8D /* MemberObject.m in Sources */,
840 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */, 858 6E18CED31F2E39DB0029891F /* LoginViewController.m in Sources */,
841 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */, 859 6EA4AF331F40BB7A00F52CFE /* TopObject.m in Sources */,
842 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */, 860 E9D909241F3D6E8C004CF99F /* BaseTableViewController.m in Sources */,
843 6E84E3761F27A701001EB88E /* main.m in Sources */, 861 6E84E3761F27A701001EB88E /* main.m in Sources */,
844 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */, 862 E933E6701F3E09B6002926F5 /* SearchGroupTableViewCell.m in Sources */,
845 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */, 863 6E84E3B51F27A98B001EB88E /* HistoryViewController.m in Sources */,
846 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */, 864 E9373E4D1F361A230059355A /* HistoryGraphObject.m in Sources */,
847 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */, 865 E933E66B1F3E04A6002926F5 /* SearchGroupViewController.m in Sources */,
848 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */, 866 6E84E3BF1F27A9B1001EB88E /* SNSViewController.m in Sources */,
849 ); 867 );
850 runOnlyForDeploymentPostprocessing = 0; 868 runOnlyForDeploymentPostprocessing = 0;
851 }; 869 };
852 6E84E3861F27A703001EB88E /* Sources */ = { 870 6E84E3861F27A703001EB88E /* Sources */ = {
853 isa = PBXSourcesBuildPhase; 871 isa = PBXSourcesBuildPhase;
854 buildActionMask = 2147483647; 872 buildActionMask = 2147483647;
855 files = ( 873 files = (
856 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */, 874 6E84E38F1F27A703001EB88E /* LifeLogTests.m in Sources */,
857 ); 875 );
858 runOnlyForDeploymentPostprocessing = 0; 876 runOnlyForDeploymentPostprocessing = 0;
859 }; 877 };
860 6E84E3911F27A703001EB88E /* Sources */ = { 878 6E84E3911F27A703001EB88E /* Sources */ = {
861 isa = PBXSourcesBuildPhase; 879 isa = PBXSourcesBuildPhase;
862 buildActionMask = 2147483647; 880 buildActionMask = 2147483647;
863 files = ( 881 files = (
864 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */, 882 6E84E39A1F27A703001EB88E /* LifeLogUITests.m in Sources */,
865 ); 883 );
866 runOnlyForDeploymentPostprocessing = 0; 884 runOnlyForDeploymentPostprocessing = 0;
867 }; 885 };
868 /* End PBXSourcesBuildPhase section */ 886 /* End PBXSourcesBuildPhase section */
869 887
870 /* Begin PBXTargetDependency section */ 888 /* Begin PBXTargetDependency section */
871 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = { 889 6E84E38C1F27A703001EB88E /* PBXTargetDependency */ = {
872 isa = PBXTargetDependency; 890 isa = PBXTargetDependency;
873 target = 6E84E3701F27A700001EB88E /* LifeLog */; 891 target = 6E84E3701F27A700001EB88E /* LifeLog */;
874 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */; 892 targetProxy = 6E84E38B1F27A703001EB88E /* PBXContainerItemProxy */;
875 }; 893 };
876 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = { 894 6E84E3971F27A703001EB88E /* PBXTargetDependency */ = {
877 isa = PBXTargetDependency; 895 isa = PBXTargetDependency;
878 target = 6E84E3701F27A700001EB88E /* LifeLog */; 896 target = 6E84E3701F27A700001EB88E /* LifeLog */;
879 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */; 897 targetProxy = 6E84E3961F27A703001EB88E /* PBXContainerItemProxy */;
880 }; 898 };
881 /* End PBXTargetDependency section */ 899 /* End PBXTargetDependency section */
882 900
883 /* Begin PBXVariantGroup section */ 901 /* Begin PBXVariantGroup section */
884 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = { 902 6E84E3821F27A701001EB88E /* LaunchScreen.storyboard */ = {
885 isa = PBXVariantGroup; 903 isa = PBXVariantGroup;
886 children = ( 904 children = (
887 6E84E3831F27A701001EB88E /* Base */, 905 6E84E3831F27A701001EB88E /* Base */,
888 ); 906 );
889 name = LaunchScreen.storyboard; 907 name = LaunchScreen.storyboard;
890 sourceTree = "<group>"; 908 sourceTree = "<group>";
891 }; 909 };
892 /* End PBXVariantGroup section */ 910 /* End PBXVariantGroup section */
893 911
894 /* Begin XCBuildConfiguration section */ 912 /* Begin XCBuildConfiguration section */
895 6E84E39C1F27A703001EB88E /* Debug */ = { 913 6E84E39C1F27A703001EB88E /* Debug */ = {
896 isa = XCBuildConfiguration; 914 isa = XCBuildConfiguration;
897 buildSettings = { 915 buildSettings = {
898 ALWAYS_SEARCH_USER_PATHS = NO; 916 ALWAYS_SEARCH_USER_PATHS = NO;
899 CLANG_ANALYZER_NONNULL = YES; 917 CLANG_ANALYZER_NONNULL = YES;
900 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 918 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
901 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 919 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
902 CLANG_CXX_LIBRARY = "libc++"; 920 CLANG_CXX_LIBRARY = "libc++";
903 CLANG_ENABLE_MODULES = YES; 921 CLANG_ENABLE_MODULES = YES;
904 CLANG_ENABLE_OBJC_ARC = YES; 922 CLANG_ENABLE_OBJC_ARC = YES;
905 CLANG_WARN_BOOL_CONVERSION = YES; 923 CLANG_WARN_BOOL_CONVERSION = YES;
906 CLANG_WARN_CONSTANT_CONVERSION = YES; 924 CLANG_WARN_CONSTANT_CONVERSION = YES;
907 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 925 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
908 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 926 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
909 CLANG_WARN_EMPTY_BODY = YES; 927 CLANG_WARN_EMPTY_BODY = YES;
910 CLANG_WARN_ENUM_CONVERSION = YES; 928 CLANG_WARN_ENUM_CONVERSION = YES;
911 CLANG_WARN_INFINITE_RECURSION = YES; 929 CLANG_WARN_INFINITE_RECURSION = YES;
912 CLANG_WARN_INT_CONVERSION = YES; 930 CLANG_WARN_INT_CONVERSION = YES;
913 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 931 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
914 CLANG_WARN_SUSPICIOUS_MOVE = YES; 932 CLANG_WARN_SUSPICIOUS_MOVE = YES;
915 CLANG_WARN_UNREACHABLE_CODE = YES; 933 CLANG_WARN_UNREACHABLE_CODE = YES;
916 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 934 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
917 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 935 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
918 COPY_PHASE_STRIP = NO; 936 COPY_PHASE_STRIP = NO;
919 DEBUG_INFORMATION_FORMAT = dwarf; 937 DEBUG_INFORMATION_FORMAT = dwarf;
920 ENABLE_STRICT_OBJC_MSGSEND = YES; 938 ENABLE_STRICT_OBJC_MSGSEND = YES;
921 ENABLE_TESTABILITY = YES; 939 ENABLE_TESTABILITY = YES;
922 GCC_C_LANGUAGE_STANDARD = gnu99; 940 GCC_C_LANGUAGE_STANDARD = gnu99;
923 GCC_DYNAMIC_NO_PIC = NO; 941 GCC_DYNAMIC_NO_PIC = NO;
924 GCC_NO_COMMON_BLOCKS = YES; 942 GCC_NO_COMMON_BLOCKS = YES;
925 GCC_OPTIMIZATION_LEVEL = 0; 943 GCC_OPTIMIZATION_LEVEL = 0;
926 GCC_PREPROCESSOR_DEFINITIONS = ( 944 GCC_PREPROCESSOR_DEFINITIONS = (
927 "DEBUG=1", 945 "DEBUG=1",
928 "$(inherited)", 946 "$(inherited)",
929 ); 947 );
930 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 948 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
931 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 949 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
932 GCC_WARN_UNDECLARED_SELECTOR = YES; 950 GCC_WARN_UNDECLARED_SELECTOR = YES;
933 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 951 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
934 GCC_WARN_UNUSED_FUNCTION = YES; 952 GCC_WARN_UNUSED_FUNCTION = YES;
935 GCC_WARN_UNUSED_VARIABLE = YES; 953 GCC_WARN_UNUSED_VARIABLE = YES;
936 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 954 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
937 MTL_ENABLE_DEBUG_INFO = YES; 955 MTL_ENABLE_DEBUG_INFO = YES;
938 ONLY_ACTIVE_ARCH = YES; 956 ONLY_ACTIVE_ARCH = YES;
939 SDKROOT = iphoneos; 957 SDKROOT = iphoneos;
940 TARGETED_DEVICE_FAMILY = "1,2"; 958 TARGETED_DEVICE_FAMILY = "1,2";
941 }; 959 };
942 name = Debug; 960 name = Debug;
943 }; 961 };
944 6E84E39D1F27A703001EB88E /* Release */ = { 962 6E84E39D1F27A703001EB88E /* Release */ = {
945 isa = XCBuildConfiguration; 963 isa = XCBuildConfiguration;
946 buildSettings = { 964 buildSettings = {
947 ALWAYS_SEARCH_USER_PATHS = NO; 965 ALWAYS_SEARCH_USER_PATHS = NO;
948 CLANG_ANALYZER_NONNULL = YES; 966 CLANG_ANALYZER_NONNULL = YES;
949 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 967 CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
950 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 968 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
951 CLANG_CXX_LIBRARY = "libc++"; 969 CLANG_CXX_LIBRARY = "libc++";
952 CLANG_ENABLE_MODULES = YES; 970 CLANG_ENABLE_MODULES = YES;
953 CLANG_ENABLE_OBJC_ARC = YES; 971 CLANG_ENABLE_OBJC_ARC = YES;
954 CLANG_WARN_BOOL_CONVERSION = YES; 972 CLANG_WARN_BOOL_CONVERSION = YES;
955 CLANG_WARN_CONSTANT_CONVERSION = YES; 973 CLANG_WARN_CONSTANT_CONVERSION = YES;
956 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 974 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
957 CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 975 CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
958 CLANG_WARN_EMPTY_BODY = YES; 976 CLANG_WARN_EMPTY_BODY = YES;
959 CLANG_WARN_ENUM_CONVERSION = YES; 977 CLANG_WARN_ENUM_CONVERSION = YES;
960 CLANG_WARN_INFINITE_RECURSION = YES; 978 CLANG_WARN_INFINITE_RECURSION = YES;
961 CLANG_WARN_INT_CONVERSION = YES; 979 CLANG_WARN_INT_CONVERSION = YES;
962 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 980 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
963 CLANG_WARN_SUSPICIOUS_MOVE = YES; 981 CLANG_WARN_SUSPICIOUS_MOVE = YES;
964 CLANG_WARN_UNREACHABLE_CODE = YES; 982 CLANG_WARN_UNREACHABLE_CODE = YES;
965 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 983 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
966 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 984 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
967 COPY_PHASE_STRIP = NO; 985 COPY_PHASE_STRIP = NO;
968 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 986 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
969 ENABLE_NS_ASSERTIONS = NO; 987 ENABLE_NS_ASSERTIONS = NO;
970 ENABLE_STRICT_OBJC_MSGSEND = YES; 988 ENABLE_STRICT_OBJC_MSGSEND = YES;
971 GCC_C_LANGUAGE_STANDARD = gnu99; 989 GCC_C_LANGUAGE_STANDARD = gnu99;
972 GCC_NO_COMMON_BLOCKS = YES; 990 GCC_NO_COMMON_BLOCKS = YES;
973 GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 991 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
974 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 992 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
975 GCC_WARN_UNDECLARED_SELECTOR = YES; 993 GCC_WARN_UNDECLARED_SELECTOR = YES;
976 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 994 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
977 GCC_WARN_UNUSED_FUNCTION = YES; 995 GCC_WARN_UNUSED_FUNCTION = YES;
978 GCC_WARN_UNUSED_VARIABLE = YES; 996 GCC_WARN_UNUSED_VARIABLE = YES;
979 IPHONEOS_DEPLOYMENT_TARGET = 10.3; 997 IPHONEOS_DEPLOYMENT_TARGET = 10.3;
980 MTL_ENABLE_DEBUG_INFO = NO; 998 MTL_ENABLE_DEBUG_INFO = NO;
981 SDKROOT = iphoneos; 999 SDKROOT = iphoneos;
982 TARGETED_DEVICE_FAMILY = "1,2"; 1000 TARGETED_DEVICE_FAMILY = "1,2";
983 VALIDATE_PRODUCT = YES; 1001 VALIDATE_PRODUCT = YES;
984 }; 1002 };
985 name = Release; 1003 name = Release;
986 }; 1004 };
987 6E84E39F1F27A703001EB88E /* Debug */ = { 1005 6E84E39F1F27A703001EB88E /* Debug */ = {
988 isa = XCBuildConfiguration; 1006 isa = XCBuildConfiguration;
989 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */; 1007 baseConfigurationReference = 0FC2D57087AF4571C57FAE08 /* Pods-LifeLog.debug.xcconfig */;
990 buildSettings = { 1008 buildSettings = {
991 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1009 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
992 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1010 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
993 DEVELOPMENT_TEAM = ""; 1011 DEVELOPMENT_TEAM = "";
994 INFOPLIST_FILE = LifeLog/Info.plist; 1012 INFOPLIST_FILE = LifeLog/Info.plist;
995 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 1013 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
996 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1014 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
997 OTHER_LDFLAGS = ( 1015 OTHER_LDFLAGS = (
998 "$(inherited)", 1016 "$(inherited)",
999 "-framework", 1017 "-framework",
1000 "\"CircleProgressBar\"", 1018 "\"CircleProgressBar\"",
1001 "-all_load", 1019 "-all_load",
1002 "-ObjC", 1020 "-ObjC",
1003 ); 1021 );
1004 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 1022 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
1005 PRODUCT_NAME = "$(TARGET_NAME)"; 1023 PRODUCT_NAME = "$(TARGET_NAME)";
1006 PROVISIONING_PROFILE = ""; 1024 PROVISIONING_PROFILE = "";
1007 PROVISIONING_PROFILE_SPECIFIER = ""; 1025 PROVISIONING_PROFILE_SPECIFIER = "";
1008 }; 1026 };
1009 name = Debug; 1027 name = Debug;
1010 }; 1028 };
1011 6E84E3A01F27A703001EB88E /* Release */ = { 1029 6E84E3A01F27A703001EB88E /* Release */ = {
1012 isa = XCBuildConfiguration; 1030 isa = XCBuildConfiguration;
1013 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */; 1031 baseConfigurationReference = 4CFDA5714AF852358A1EB515 /* Pods-LifeLog.release.xcconfig */;
1014 buildSettings = { 1032 buildSettings = {
1015 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1033 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1016 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 1034 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
1017 DEVELOPMENT_TEAM = ""; 1035 DEVELOPMENT_TEAM = "";
1018 INFOPLIST_FILE = LifeLog/Info.plist; 1036 INFOPLIST_FILE = LifeLog/Info.plist;
1019 IPHONEOS_DEPLOYMENT_TARGET = 9.0; 1037 IPHONEOS_DEPLOYMENT_TARGET = 9.0;
1020 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1038 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
1021 OTHER_LDFLAGS = ( 1039 OTHER_LDFLAGS = (
1022 "$(inherited)", 1040 "$(inherited)",
1023 "-framework", 1041 "-framework",
1024 "\"CircleProgressBar\"", 1042 "\"CircleProgressBar\"",
1025 "-all_load", 1043 "-all_load",
1026 "-ObjC", 1044 "-ObjC",
1027 ); 1045 );
1028 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; 1046 PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog;
1029 PRODUCT_NAME = "$(TARGET_NAME)"; 1047 PRODUCT_NAME = "$(TARGET_NAME)";
1030 PROVISIONING_PROFILE = ""; 1048 PROVISIONING_PROFILE = "";
1031 PROVISIONING_PROFILE_SPECIFIER = ""; 1049 PROVISIONING_PROFILE_SPECIFIER = "";
1032 }; 1050 };
1033 name = Release; 1051 name = Release;
1034 }; 1052 };
1035 6E84E3A21F27A703001EB88E /* Debug */ = { 1053 6E84E3A21F27A703001EB88E /* Debug */ = {
1036 isa = XCBuildConfiguration; 1054 isa = XCBuildConfiguration;
1037 buildSettings = { 1055 buildSettings = {
1038 BUNDLE_LOADER = "$(TEST_HOST)"; 1056 BUNDLE_LOADER = "$(TEST_HOST)";
1039 INFOPLIST_FILE = LifeLogTests/Info.plist; 1057 INFOPLIST_FILE = LifeLogTests/Info.plist;
1040 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1058 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1041 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 1059 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
1042 PRODUCT_NAME = "$(TARGET_NAME)"; 1060 PRODUCT_NAME = "$(TARGET_NAME)";
1043 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 1061 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
1044 }; 1062 };
1045 name = Debug; 1063 name = Debug;
1046 }; 1064 };
1047 6E84E3A31F27A703001EB88E /* Release */ = { 1065 6E84E3A31F27A703001EB88E /* Release */ = {
1048 isa = XCBuildConfiguration; 1066 isa = XCBuildConfiguration;
1049 buildSettings = { 1067 buildSettings = {
1050 BUNDLE_LOADER = "$(TEST_HOST)"; 1068 BUNDLE_LOADER = "$(TEST_HOST)";
1051 INFOPLIST_FILE = LifeLogTests/Info.plist; 1069 INFOPLIST_FILE = LifeLogTests/Info.plist;
1052 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1070 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1053 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests; 1071 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogTests;
1054 PRODUCT_NAME = "$(TARGET_NAME)"; 1072 PRODUCT_NAME = "$(TARGET_NAME)";
1055 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog"; 1073 TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LifeLog.app/LifeLog";
1056 }; 1074 };
1057 name = Release; 1075 name = Release;
1058 }; 1076 };
1059 6E84E3A51F27A703001EB88E /* Debug */ = { 1077 6E84E3A51F27A703001EB88E /* Debug */ = {
1060 isa = XCBuildConfiguration; 1078 isa = XCBuildConfiguration;
1061 buildSettings = { 1079 buildSettings = {
1062 INFOPLIST_FILE = LifeLogUITests/Info.plist; 1080 INFOPLIST_FILE = LifeLogUITests/Info.plist;
1063 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1081 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1064 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 1082 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
1065 PRODUCT_NAME = "$(TARGET_NAME)"; 1083 PRODUCT_NAME = "$(TARGET_NAME)";
1066 TEST_TARGET_NAME = LifeLog; 1084 TEST_TARGET_NAME = LifeLog;
1067 }; 1085 };
1068 name = Debug; 1086 name = Debug;
1069 }; 1087 };
1070 6E84E3A61F27A703001EB88E /* Release */ = { 1088 6E84E3A61F27A703001EB88E /* Release */ = {
1071 isa = XCBuildConfiguration; 1089 isa = XCBuildConfiguration;
1072 buildSettings = { 1090 buildSettings = {
1073 INFOPLIST_FILE = LifeLogUITests/Info.plist; 1091 INFOPLIST_FILE = LifeLogUITests/Info.plist;
1074 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1092 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1075 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests; 1093 PRODUCT_BUNDLE_IDENTIFIER = com.mav.LifeLogUITests;
1076 PRODUCT_NAME = "$(TARGET_NAME)"; 1094 PRODUCT_NAME = "$(TARGET_NAME)";
1077 TEST_TARGET_NAME = LifeLog; 1095 TEST_TARGET_NAME = LifeLog;
1078 }; 1096 };
1079 name = Release; 1097 name = Release;
1080 }; 1098 };
1081 /* End XCBuildConfiguration section */ 1099 /* End XCBuildConfiguration section */
1082 1100
1083 /* Begin XCConfigurationList section */ 1101 /* Begin XCConfigurationList section */
1084 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = { 1102 6E84E36C1F27A700001EB88E /* Build configuration list for PBXProject "LifeLog" */ = {
1085 isa = XCConfigurationList; 1103 isa = XCConfigurationList;
1086 buildConfigurations = ( 1104 buildConfigurations = (
1087 6E84E39C1F27A703001EB88E /* Debug */, 1105 6E84E39C1F27A703001EB88E /* Debug */,
1088 6E84E39D1F27A703001EB88E /* Release */, 1106 6E84E39D1F27A703001EB88E /* Release */,
1089 ); 1107 );
1090 defaultConfigurationIsVisible = 0; 1108 defaultConfigurationIsVisible = 0;
1091 defaultConfigurationName = Release; 1109 defaultConfigurationName = Release;
1092 }; 1110 };
1093 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = { 1111 6E84E39E1F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLog" */ = {
1094 isa = XCConfigurationList; 1112 isa = XCConfigurationList;
1095 buildConfigurations = ( 1113 buildConfigurations = (
1096 6E84E39F1F27A703001EB88E /* Debug */, 1114 6E84E39F1F27A703001EB88E /* Debug */,
1097 6E84E3A01F27A703001EB88E /* Release */, 1115 6E84E3A01F27A703001EB88E /* Release */,
1098 ); 1116 );
1099 defaultConfigurationIsVisible = 0; 1117 defaultConfigurationIsVisible = 0;
1100 defaultConfigurationName = Release; 1118 defaultConfigurationName = Release;
1101 }; 1119 };
1102 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = { 1120 6E84E3A11F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogTests" */ = {
1103 isa = XCConfigurationList; 1121 isa = XCConfigurationList;
1104 buildConfigurations = ( 1122 buildConfigurations = (
1105 6E84E3A21F27A703001EB88E /* Debug */, 1123 6E84E3A21F27A703001EB88E /* Debug */,
1106 6E84E3A31F27A703001EB88E /* Release */, 1124 6E84E3A31F27A703001EB88E /* Release */,
1107 ); 1125 );
1108 defaultConfigurationIsVisible = 0; 1126 defaultConfigurationIsVisible = 0;
1109 defaultConfigurationName = Release; 1127 defaultConfigurationName = Release;
1110 }; 1128 };
1111 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = { 1129 6E84E3A41F27A703001EB88E /* Build configuration list for PBXNativeTarget "LifeLogUITests" */ = {
1112 isa = XCConfigurationList; 1130 isa = XCConfigurationList;
1113 buildConfigurations = ( 1131 buildConfigurations = (
1114 6E84E3A51F27A703001EB88E /* Debug */, 1132 6E84E3A51F27A703001EB88E /* Debug */,
1115 6E84E3A61F27A703001EB88E /* Release */, 1133 6E84E3A61F27A703001EB88E /* Release */,
1116 ); 1134 );
1117 defaultConfigurationIsVisible = 0; 1135 defaultConfigurationIsVisible = 0;
1118 defaultConfigurationName = Release; 1136 defaultConfigurationName = Release;
1119 }; 1137 };
1120 /* End XCConfigurationList section */ 1138 /* End XCConfigurationList section */
1121 }; 1139 };
1122 rootObject = 6E84E3691F27A700001EB88E /* Project object */; 1140 rootObject = 6E84E3691F27A700001EB88E /* Project object */;
1123 } 1141 }
1124 1142
LifeLog/LifeLog/BaseTableViewController.m
1 // 1 //
2 // BaseTableViewController.m 2 // BaseTableViewController.m
3 // LifeLog 3 // LifeLog
4 // 4 //
5 // Created by nvtu on 8/11/17. 5 // Created by nvtu on 8/11/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved. 6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 // 7 //
8 8
9 #import "BaseTableViewController.h" 9 #import "BaseTableViewController.h"
10 #import "Utilities.h" 10 #import "Utilities.h"
11 11
12 @interface BaseTableViewController () 12 @interface BaseTableViewController ()
13 13
14 @end 14 @end
15 15
16 @implementation BaseTableViewController 16 @implementation BaseTableViewController
17 17
18 - (void)viewDidLoad { 18 - (void)viewDidLoad {
19 [super viewDidLoad]; 19 [super viewDidLoad];
20 _firstTime = false; 20 _firstTime = false;
21 _curPage = 1; 21 _curPage = 1;
22 _isEndOfResult = false; 22 _isEndOfResult = false;
23 _curDataList = [[NSMutableArray alloc] init]; 23 _curDataList = [[NSMutableArray alloc] init];
24 self.refreshControl = [[UIRefreshControl alloc] init]; 24 self.refreshControl = [[UIRefreshControl alloc] init];
25 [self.refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged]; 25 [self.refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged];
26 [self.tableBase addSubview:self.refreshControl]; 26 [self.tableBase addSubview:self.refreshControl];
27 // Do any additional setup after loading the view. 27 // Do any additional setup after loading the view.
28 } 28 }
29 29
30 - (void)didReceiveMemoryWarning { 30 - (void)didReceiveMemoryWarning {
31 [super didReceiveMemoryWarning]; 31 [super didReceiveMemoryWarning];
32 // Dispose of any resources that can be recreated. 32 // Dispose of any resources that can be recreated.
33 } 33 }
34 34
35 -(void) callRequestToUpdateData { 35 -(void) callRequestToUpdateData {
36 _isLoading = true; 36 _isLoading = true;
37 } 37 }
38 38
39 -(void) resetData { 39 -(void) resetData {
40 _isLoading = false; 40 _isLoading = false;
41 _isEndOfResult = false; 41 _isEndOfResult = false;
42 _firstTime = false; 42 _firstTime = false;
43 _curPage = 1; 43 _curPage = 1;
44 [_curDataList removeAllObjects]; 44 [_curDataList removeAllObjects];
45 [self.tableBase reloadData]; 45 [self.tableBase reloadData];
46 [self callRequestToUpdateData]; 46 [self callRequestToUpdateData];
47 } 47 }
48 48
49 -(void) refreshTable { 49 -(void) refreshTable {
50 [self resetData]; 50 [self resetData];
51 } 51 }
52 52
53 -(void) updateTableData : (NSArray *) array error: (NSError *) error { 53 -(void) updateTableData : (NSArray *) array error: (NSError *) error {
54 BaseTableViewController __weak *weakSelf = self; 54 BaseTableViewController __weak *weakSelf = self;
55 _isLoading = false; 55 _isLoading = false;
56 _firstTime = true; 56 _firstTime = true;
57 if(self.refreshControl != nil) { 57 if(self.refreshControl != nil) {
58 dispatch_async(dispatch_get_main_queue(), ^{ 58 dispatch_async(dispatch_get_main_queue(), ^{
59 [self.refreshControl endRefreshing]; 59 [self.refreshControl endRefreshing];
60 }); 60 });
61 } 61 }
62 if(error == nil) { 62 if(error == nil) {
63 if(array.count != 0) { 63 if(array.count != 0) {
64 if(_curPage == 1) {
65 [_curDataList removeAllObjects];
66 }
64 [_curDataList addObjectsFromArray:array]; 67 [_curDataList addObjectsFromArray:array];
65 dispatch_async(dispatch_get_main_queue(), ^{ 68 dispatch_async(dispatch_get_main_queue(), ^{
66 [weakSelf.tableBase reloadData]; 69 [weakSelf.tableBase reloadData];
67 }); 70 });
68 } 71 }
69 else { 72 else {
70 if(_curPage != 1) { 73 if(_curPage != 1) {
71 _isEndOfResult = true; 74 _isEndOfResult = true;
72 _curPage -= 1; 75 _curPage -= 1;
73 } 76 }
74 else { 77 else {
75 dispatch_async(dispatch_get_main_queue(), ^{ 78 dispatch_async(dispatch_get_main_queue(), ^{
76 [weakSelf.tableBase reloadData]; 79 [weakSelf.tableBase reloadData];
77 }); 80 });
78 } 81 }
79 } 82 }
80 } 83 }
81 else { 84 else {
82 _curPage = MAX(1, _curPage - 1); 85 _curPage = MAX(1, _curPage - 1);
83 dispatch_async(dispatch_get_main_queue(), ^{ 86 dispatch_async(dispatch_get_main_queue(), ^{
84 NSString *message = [error.userInfo objectForKey:@"message"]; 87 NSString *message = [error.userInfo objectForKey:@"message"];
85 [Utilities showErrorMessage:message withViewController:weakSelf]; 88 [Utilities showErrorMessage:message withViewController:weakSelf];
86 }); 89 });
87 } 90 }
88 } 91 }
89 92
90 #pragma mark UITableView Delegate 93 #pragma mark UITableView Delegate
91 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { 94 - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
92 if((_curDataList == nil || _curDataList.count == 0) && _firstTime) { 95 if((_curDataList == nil || _curDataList.count == 0) && _firstTime) {
93 UILabel * noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height)]; 96 UILabel * noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height)];
94 noDataLabel.text = @"No data available"; 97 noDataLabel.text = @"No data available";
95 noDataLabel.backgroundColor = [UIColor clearColor]; 98 noDataLabel.backgroundColor = [UIColor clearColor];
96 noDataLabel.textColor = [UIColor whiteColor]; 99 noDataLabel.textColor = [UIColor whiteColor];
97 noDataLabel.textAlignment = NSTextAlignmentCenter; 100 noDataLabel.textAlignment = NSTextAlignmentCenter;
98 tableView.backgroundView = noDataLabel; 101 tableView.backgroundView = noDataLabel;
99 tableView.backgroundView.layer.zPosition -= 1; 102 tableView.backgroundView.layer.zPosition -= 1;
100 return 0; 103 return 0;
101 } 104 }
102 tableView.backgroundView = nil; 105 tableView.backgroundView = nil;
103 return 1; 106 return 1;
104 } 107 }
105 108
106 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 109 - (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
107 return _curDataList.count; 110 return _curDataList.count;
108 } 111 }
109 112
110 - (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 113 - (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
111 NSInteger lastRowIndex = [tableView numberOfRowsInSection:0] - 1; 114 NSInteger lastRowIndex = [tableView numberOfRowsInSection:0] - 1;
112 if (indexPath.row == lastRowIndex) { 115 if (indexPath.row == lastRowIndex) {
113 // This is the last cell 116 // This is the last cell
114 if(!_isLoading) { 117 if(!_isLoading) {
115 _curPage += 1; 118 _curPage += 1;
116 [self callRequestToUpdateData]; 119 [self callRequestToUpdateData];
117 } 120 }
118 } 121 }
119 } 122 }
120 @end 123 @end
121 124
LifeLog/LifeLog/CreateGroupViewController.h
File was created 1 //
2 // CreateGroupViewController.h
3 // LifeLog
4 //
5 // Created by nvtu on 8/19/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import <UIKit/UIKit.h>
10 #import "BaseViewController.h"
11 #import "AutoTransButton.h"
12 #import "Utilities.h"
13 #import "Entities.h"
14
15 @interface CreateGroupViewController : BaseViewController<UITextFieldDelegate, UITextViewDelegate>
16
17 @property (weak, nonatomic) IBOutlet UITextField *textName;
18 @property (weak, nonatomic) IBOutlet UITextField *textGoalWalk;
19 @property (weak, nonatomic) IBOutlet UITextField *textGoalRun;
20 @property (weak, nonatomic) IBOutlet UITextField *textGoalBike;
21
22 @property (weak, nonatomic) IBOutlet UITextView *textGoal;
23
24 @property (weak, nonatomic) IBOutlet UISwitch *switchWalk;
25 @property (weak, nonatomic) IBOutlet UISwitch *switchBike;
26 @property (weak, nonatomic) IBOutlet UISwitch *switchRun;
27 @property (weak, nonatomic) IBOutlet UISwitch *switchStep;
28 @property (weak, nonatomic) IBOutlet UISwitch *switchGym;
29 @property (weak, nonatomic) IBOutlet UISwitch *switchBegin;
30
31 @property (copy) void (^createGroupSuccess)(GroupObject * group);
32
33 - (IBAction)clickBack:(UIButton *)sender;
34 - (IBAction)clickCreateGroup:(AutoTransButton *)sender;
35
36 @end
37
LifeLog/LifeLog/CreateGroupViewController.m
File was created 1 //
2 // CreateGroupViewController.m
3 // LifeLog
4 //
5 // Created by nvtu on 8/19/17.
6 // Copyright ยฉ 2017 PhongNV. All rights reserved.
7 //
8
9 #import "CreateGroupViewController.h"
10 #import "ServerAPI.h"
11
12 @interface CreateGroupViewController ()
13
14 @end
15
16 @implementation CreateGroupViewController
17
18 - (void)viewDidLoad {
19 [super viewDidLoad];
20 // Do any additional setup after loading the view from its nib.
21 }
22
23 - (void)didReceiveMemoryWarning {
24 [super didReceiveMemoryWarning];
25 // Dispose of any resources that can be recreated.
26 }
27
28 #pragma mark IBAction
29
30 - (IBAction)clickBack:(UIButton *)sender {
31 [self.navigationController popViewControllerAnimated:true];
32 }
33
34 - (IBAction)clickCreateGroup:(AutoTransButton *)sender {
35 NSString *name = self.textName.text;
36 NSString *goal = self.textGoal.text;
37 if(name.length == 0) {
38 [Utilities showErrorMessage:@"Fill name of group!" withViewController:self];
39 return;
40 }
41 else if(name.length >= 255) {
42 [Utilities showErrorMessage:@"Name of group is too long!" withViewController:self];
43 return;
44 }
45 else if(goal.length == 0) {
46 [Utilities showErrorMessage:@"Fill information for goal of group" withViewController:self];
47 return;
48 }
49 if(self.switchWalk.on && [self.textGoalWalk.text intValue] == 0) {
50 [Utilities showErrorMessage:@"Add goal for walk mode" withViewController:self];
51 return;
52 }
53 if(self.switchBike.on && [self.textGoalBike.text intValue] == 0) {
54 [Utilities showErrorMessage:@"Add goal for bike mode" withViewController:self];
55 return;
56 }
57 if(self.switchRun.on && [self.textGoalRun.text intValue] == 0) {
58 [Utilities showErrorMessage:@"Add goal for run mode" withViewController:self];
59 return;
60 }
61 GroupObject *object = [[GroupObject alloc] init];
62 object.name = name;
63 object.goal = goal;
64 object.walkMode = self.switchWalk.on;
65 object.runMode = self.switchRun.on;
66 object.bikeMode = self.switchBike.on;
67 object.stepMode = self.switchStep.on;
68 object.gymMode = self.switchGym.on;
69 object.beginMode = self.switchBegin.on;
70 object.walkGoal = [self.textGoalWalk.text intValue];
71 object.bikeGoal = [self.textGoalBike.text intValue];
72 object.runGoal = [self.textGoalRun.text intValue];
73
74 NSLog(@"%@", object.name);
75 NSLog(@"%@", object.goal);
76 NSLog(@"%d", object.walkGoal);
77 NSLog(@"%d", object.bikeGoal);
78 NSLog(@"%d", object.runGoal);
79 NSLog(@"%d", object.walkMode);
80 NSLog(@"%d", object.runMode);
81 NSLog(@"%d", object.bikeMode);
82 NSLog(@"%d", object.stepMode);
83 NSLog(@"%d", object.gymMode);
84 NSLog(@"%d", object.beginMode);
85
86 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
87 MBProgressHUD *hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
88 [[ServerAPI server] requestCreateGroup:token withGroup:object CompletionHandler:^(GroupObject * group, NSError * error) {
89 CreateGroupViewController __weak *weakSelf = self;
90 if(error == nil) {
91 dispatch_async(dispatch_get_main_queue(), ^{
92 if(weakSelf.createGroupSuccess != nil) {
93 [hudView hideAnimated:true];
94 [weakSelf clickBack:nil];
95 weakSelf.createGroupSuccess(object);
96 }
97 });
98 }
99 else {
100 dispatch_async(dispatch_get_main_queue(), ^{
101 [hudView hideAnimated:true];
102 NSString *message = [error.userInfo objectForKey:@"message"];
103 [Utilities showErrorMessage:message withViewController:weakSelf];
104 });
105 }
106 }];
107 }
108
109 #pragma mark UITextView Delegate
110
111 -(BOOL) textFieldShouldReturn:(UITextField *)textField {
112 [self.view endEditing:true];
113 return true;
114 }
115
116 @end
117
LifeLog/LifeLog/CreateGroupViewController.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="Aspect ratio constraints" minToolsVersion="5.1"/>
9 <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
10 </dependencies>
11 <objects>
12 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CreateGroupViewController">
13 <connections>
14 <outlet property="switchBegin" destination="e63-8i-6aa" id="bbT-m6-3CV"/>
15 <outlet property="switchBike" destination="fGW-Vw-PwQ" id="ncx-kP-qdd"/>
16 <outlet property="switchGym" destination="Yga-UQ-xoU" id="rIN-kO-wmO"/>
17 <outlet property="switchRun" destination="2gX-B2-tkR" id="yak-gV-Cas"/>
18 <outlet property="switchStep" destination="RoR-w7-dNT" id="19b-K3-qAu"/>
19 <outlet property="switchWalk" destination="3xD-aH-JHl" id="OZ9-l7-Rww"/>
20 <outlet property="textGoal" destination="hWb-vU-yVd" id="dp0-yK-P60"/>
21 <outlet property="textGoalBike" destination="eOi-eo-GYn" id="qfW-ns-tsM"/>
22 <outlet property="textGoalRun" destination="3aE-uP-KLS" id="WAE-tl-O94"/>
23 <outlet property="textGoalWalk" destination="4JZ-J2-3D9" id="yHV-mB-rcn"/>
24 <outlet property="textName" destination="pXO-K0-vne" id="ePQ-35-RLr"/>
25 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
26 </connections>
27 </placeholder>
28 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
29 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
30 <rect key="frame" x="0.0" y="0.0" width="320" height="626"/>
31 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
32 <subviews>
33 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QYv-QM-Bkk" userLabel="ViewHeader">
34 <rect key="frame" x="0.0" y="0.0" width="320" height="46"/>
35 <subviews>
36 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ใ‚ณใƒŸใƒฅใƒ‹ใƒ†ใ‚ฃใƒผใ€€ใ‚ฐใƒซใƒผใƒ—ไฝœๆˆ" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9hM-Gv-AxQ" customClass="AutoTransLabel">
37 <rect key="frame" x="0.0" y="0.0" width="320" height="46"/>
38 <fontDescription key="fontDescription" type="system" pointSize="16"/>
39 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
40 <nil key="highlightedColor"/>
41 <userDefinedRuntimeAttributes>
42 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.title"/>
43 </userDefinedRuntimeAttributes>
44 </label>
45 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="O23-Hy-4Ld">
46 <rect key="frame" x="0.0" y="5" width="70" height="36"/>
47 <constraints>
48 <constraint firstAttribute="width" constant="70" id="8vZ-Ta-Rzv"/>
49 </constraints>
50 <state key="normal" image="today_back_button"/>
51 <connections>
52 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="BO6-jx-vuO"/>
53 </connections>
54 </button>
55 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fPg-VP-VkU">
56 <rect key="frame" x="275" y="0.0" width="45" height="46"/>
57 <constraints>
58 <constraint firstAttribute="width" constant="45" id="k1W-Oc-mRq"/>
59 </constraints>
60 <state key="normal" image="icon_menu"/>
61 </button>
62 </subviews>
63 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
64 <constraints>
65 <constraint firstAttribute="trailing" secondItem="9hM-Gv-AxQ" secondAttribute="trailing" id="5f8-Xt-vKd"/>
66 <constraint firstAttribute="bottom" secondItem="9hM-Gv-AxQ" secondAttribute="bottom" id="Q3z-hF-VbV"/>
67 <constraint firstItem="9hM-Gv-AxQ" firstAttribute="top" secondItem="QYv-QM-Bkk" secondAttribute="top" id="XNi-3d-xFW"/>
68 <constraint firstItem="O23-Hy-4Ld" firstAttribute="leading" secondItem="QYv-QM-Bkk" secondAttribute="leading" id="aMc-uz-vGA"/>
69 <constraint firstItem="fPg-VP-VkU" firstAttribute="top" secondItem="QYv-QM-Bkk" secondAttribute="top" id="bLC-DU-cJf"/>
70 <constraint firstItem="9hM-Gv-AxQ" firstAttribute="leading" secondItem="QYv-QM-Bkk" secondAttribute="leading" id="cUY-dT-Rh0"/>
71 <constraint firstAttribute="trailing" secondItem="fPg-VP-VkU" secondAttribute="trailing" id="fn0-SY-e1Z"/>
72 <constraint firstAttribute="height" constant="46" id="lBP-32-aFw"/>
73 <constraint firstItem="O23-Hy-4Ld" firstAttribute="top" secondItem="QYv-QM-Bkk" secondAttribute="top" constant="5" id="ogR-c4-QQ3"/>
74 <constraint firstAttribute="bottom" secondItem="fPg-VP-VkU" secondAttribute="bottom" id="wdr-SH-Wm2"/>
75 <constraint firstAttribute="bottom" secondItem="O23-Hy-4Ld" secondAttribute="bottom" constant="5" id="yJ4-81-rJx"/>
76 </constraints>
77 </view>
78 <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aKu-bd-xMP" customClass="TPKeyboardAvoidingScrollView">
79 <rect key="frame" x="0.0" y="46" width="320" height="580"/>
80 <subviews>
81 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9w1-87-U1W">
82 <rect key="frame" x="0.0" y="0.0" width="320" height="580"/>
83 <subviews>
84 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ๅ็งฐ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZtU-mt-3Ov" customClass="AutoTransLabel">
85 <rect key="frame" x="8" y="10" width="70" height="30"/>
86 <constraints>
87 <constraint firstAttribute="width" constant="70" id="Zvx-V3-7AW"/>
88 <constraint firstAttribute="height" constant="30" id="nok-hA-mW9"/>
89 </constraints>
90 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
91 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
92 <nil key="highlightedColor"/>
93 <userDefinedRuntimeAttributes>
94 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.name"/>
95 </userDefinedRuntimeAttributes>
96 </label>
97 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="pXO-K0-vne">
98 <rect key="frame" x="88" y="10" width="222" height="30"/>
99 <constraints>
100 <constraint firstAttribute="height" constant="30" id="YJe-TW-hvA"/>
101 </constraints>
102 <nil key="textColor"/>
103 <fontDescription key="fontDescription" type="system" pointSize="14"/>
104 <textInputTraits key="textInputTraits"/>
105 <connections>
106 <outlet property="delegate" destination="-1" id="3NL-Ya-JuM"/>
107 </connections>
108 </textField>
109 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ONn-27-HqB">
110 <rect key="frame" x="10" y="50" width="140" height="120"/>
111 <subviews>
112 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="S2z-DI-pIE">
113 <rect key="frame" x="0.0" y="0.0" width="140" height="40"/>
114 <subviews>
115 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3xD-aH-JHl">
116 <rect key="frame" x="85" y="4" width="51" height="31"/>
117 <constraints>
118 <constraint firstAttribute="width" secondItem="3xD-aH-JHl" secondAttribute="height" multiplier="49:31" id="7LJ-H5-oQR"/>
119 </constraints>
120 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
121 </switch>
122 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WALK" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yFv-kp-ag8" customClass="AutoTransLabel">
123 <rect key="frame" x="6" y="10.5" width="47.5" height="20.5"/>
124 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
125 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
126 <nil key="highlightedColor"/>
127 <userDefinedRuntimeAttributes>
128 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.walk"/>
129 </userDefinedRuntimeAttributes>
130 </label>
131 </subviews>
132 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
133 <constraints>
134 <constraint firstAttribute="trailing" secondItem="3xD-aH-JHl" secondAttribute="trailing" constant="6" id="KNe-Rx-lun"/>
135 <constraint firstAttribute="height" constant="40" id="akz-T7-d2v"/>
136 <constraint firstItem="3xD-aH-JHl" firstAttribute="centerY" secondItem="S2z-DI-pIE" secondAttribute="centerY" id="oRy-OM-Om1"/>
137 <constraint firstItem="yFv-kp-ag8" firstAttribute="leading" secondItem="S2z-DI-pIE" secondAttribute="leading" constant="6" id="prt-UF-Ori"/>
138 <constraint firstItem="yFv-kp-ag8" firstAttribute="centerY" secondItem="S2z-DI-pIE" secondAttribute="centerY" id="xEl-Rl-8C1"/>
139 </constraints>
140 </view>
141 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dVh-y2-XTr">
142 <rect key="frame" x="0.0" y="40" width="140" height="40"/>
143 <subviews>
144 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2gX-B2-tkR">
145 <rect key="frame" x="85" y="4" width="51" height="31"/>
146 <constraints>
147 <constraint firstAttribute="width" secondItem="2gX-B2-tkR" secondAttribute="height" multiplier="49:31" id="pBG-Mw-aNK"/>
148 </constraints>
149 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
150 </switch>
151 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RUN" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r9v-yX-mx8" customClass="AutoTransLabel">
152 <rect key="frame" x="6" y="10.5" width="36" height="20.5"/>
153 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
154 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
155 <nil key="highlightedColor"/>
156 <userDefinedRuntimeAttributes>
157 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.run"/>
158 </userDefinedRuntimeAttributes>
159 </label>
160 </subviews>
161 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
162 <constraints>
163 <constraint firstItem="2gX-B2-tkR" firstAttribute="centerY" secondItem="dVh-y2-XTr" secondAttribute="centerY" id="bNR-wC-PQG"/>
164 <constraint firstItem="r9v-yX-mx8" firstAttribute="leading" secondItem="dVh-y2-XTr" secondAttribute="leading" constant="6" id="iHM-Q7-Z1Z"/>
165 <constraint firstAttribute="height" constant="40" id="s8W-Ak-VrH"/>
166 <constraint firstAttribute="trailing" secondItem="2gX-B2-tkR" secondAttribute="trailing" constant="6" id="usV-BG-oqp"/>
167 <constraint firstItem="r9v-yX-mx8" firstAttribute="centerY" secondItem="dVh-y2-XTr" secondAttribute="centerY" id="yZW-Wk-raQ"/>
168 </constraints>
169 </view>
170 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7PQ-zz-N0X">
171 <rect key="frame" x="0.0" y="80" width="140" height="40"/>
172 <subviews>
173 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Yga-UQ-xoU">
174 <rect key="frame" x="85" y="4" width="51" height="31"/>
175 <constraints>
176 <constraint firstAttribute="width" secondItem="Yga-UQ-xoU" secondAttribute="height" multiplier="49:31" id="laB-Zs-gOj"/>
177 </constraints>
178 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
179 </switch>
180 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ใ‚ธใƒ " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EFD-Ys-PqS" customClass="AutoTransLabel">
181 <rect key="frame" x="6" y="10.5" width="35" height="20.5"/>
182 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
183 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
184 <nil key="highlightedColor"/>
185 <userDefinedRuntimeAttributes>
186 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.gym"/>
187 </userDefinedRuntimeAttributes>
188 </label>
189 </subviews>
190 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
191 <constraints>
192 <constraint firstItem="EFD-Ys-PqS" firstAttribute="centerY" secondItem="7PQ-zz-N0X" secondAttribute="centerY" id="Ein-vC-mpy"/>
193 <constraint firstAttribute="height" constant="40" id="aKm-hG-Hyh"/>
194 <constraint firstAttribute="trailing" secondItem="Yga-UQ-xoU" secondAttribute="trailing" constant="6" id="cfd-4G-1NF"/>
195 <constraint firstItem="EFD-Ys-PqS" firstAttribute="leading" secondItem="7PQ-zz-N0X" secondAttribute="leading" constant="6" id="ojT-rz-8oC"/>
196 <constraint firstItem="Yga-UQ-xoU" firstAttribute="centerY" secondItem="7PQ-zz-N0X" secondAttribute="centerY" id="xYy-kb-5Sk"/>
197 </constraints>
198 </view>
199 </subviews>
200 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
201 <constraints>
202 <constraint firstItem="dVh-y2-XTr" firstAttribute="top" secondItem="S2z-DI-pIE" secondAttribute="bottom" id="2LH-28-ssn"/>
203 <constraint firstItem="7PQ-zz-N0X" firstAttribute="leading" secondItem="ONn-27-HqB" secondAttribute="leading" id="6md-Y8-lIk"/>
204 <constraint firstAttribute="height" constant="120" id="7Tb-oJ-5eC"/>
205 <constraint firstItem="7PQ-zz-N0X" firstAttribute="top" secondItem="dVh-y2-XTr" secondAttribute="bottom" id="Fsa-Ai-cKQ"/>
206 <constraint firstAttribute="trailing" secondItem="S2z-DI-pIE" secondAttribute="trailing" id="OV6-wK-IJj"/>
207 <constraint firstItem="dVh-y2-XTr" firstAttribute="leading" secondItem="ONn-27-HqB" secondAttribute="leading" id="TFE-bH-HwH"/>
208 <constraint firstAttribute="trailing" secondItem="dVh-y2-XTr" secondAttribute="trailing" id="Vul-EM-V8H"/>
209 <constraint firstItem="S2z-DI-pIE" firstAttribute="top" secondItem="ONn-27-HqB" secondAttribute="top" id="Yf4-Rz-E4g"/>
210 <constraint firstAttribute="trailing" secondItem="7PQ-zz-N0X" secondAttribute="trailing" id="hLr-NV-hyv"/>
211 <constraint firstItem="S2z-DI-pIE" firstAttribute="leading" secondItem="ONn-27-HqB" secondAttribute="leading" id="zMY-Vd-Ge9"/>
212 </constraints>
213 </view>
214 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Kpa-HJ-7cE">
215 <rect key="frame" x="170" y="50" width="140" height="120"/>
216 <subviews>
217 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ALk-sL-SXG">
218 <rect key="frame" x="0.0" y="0.0" width="140" height="40"/>
219 <subviews>
220 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fGW-Vw-PwQ">
221 <rect key="frame" x="85" y="4" width="51" height="31"/>
222 <constraints>
223 <constraint firstAttribute="width" secondItem="fGW-Vw-PwQ" secondAttribute="height" multiplier="49:31" id="qd5-Cg-6pG"/>
224 </constraints>
225 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
226 </switch>
227 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BIKE" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WfE-YM-vVU" customClass="AutoTransLabel">
228 <rect key="frame" x="6" y="10.5" width="36.5" height="20.5"/>
229 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
230 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
231 <nil key="highlightedColor"/>
232 <userDefinedRuntimeAttributes>
233 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.bike"/>
234 </userDefinedRuntimeAttributes>
235 </label>
236 </subviews>
237 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
238 <constraints>
239 <constraint firstItem="WfE-YM-vVU" firstAttribute="leading" secondItem="ALk-sL-SXG" secondAttribute="leading" constant="6" id="7xm-U8-L7U"/>
240 <constraint firstAttribute="height" constant="40" id="L4u-uj-rHa"/>
241 <constraint firstItem="fGW-Vw-PwQ" firstAttribute="centerY" secondItem="ALk-sL-SXG" secondAttribute="centerY" id="PBA-tv-gec"/>
242 <constraint firstAttribute="trailing" secondItem="fGW-Vw-PwQ" secondAttribute="trailing" constant="6" id="bHc-Ih-6ar"/>
243 <constraint firstItem="WfE-YM-vVU" firstAttribute="centerY" secondItem="ALk-sL-SXG" secondAttribute="centerY" id="te7-Im-Oqh"/>
244 </constraints>
245 </view>
246 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4Az-6N-8u4">
247 <rect key="frame" x="0.0" y="40" width="140" height="40"/>
248 <subviews>
249 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="RoR-w7-dNT">
250 <rect key="frame" x="85" y="4" width="51" height="31"/>
251 <constraints>
252 <constraint firstAttribute="width" secondItem="RoR-w7-dNT" secondAttribute="height" multiplier="49:31" id="YUz-Eh-EmZ"/>
253 </constraints>
254 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
255 </switch>
256 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="STEP" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZyO-6K-2gA" customClass="AutoTransLabel">
257 <rect key="frame" x="6" y="10.5" width="42" height="20.5"/>
258 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
259 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
260 <nil key="highlightedColor"/>
261 <userDefinedRuntimeAttributes>
262 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.step"/>
263 </userDefinedRuntimeAttributes>
264 </label>
265 </subviews>
266 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
267 <constraints>
268 <constraint firstAttribute="trailing" secondItem="RoR-w7-dNT" secondAttribute="trailing" constant="6" id="Cc4-W7-Qc8"/>
269 <constraint firstItem="ZyO-6K-2gA" firstAttribute="leading" secondItem="4Az-6N-8u4" secondAttribute="leading" constant="6" id="ER7-Bx-w9j"/>
270 <constraint firstAttribute="height" constant="40" id="Kcy-ij-IsH"/>
271 <constraint firstItem="RoR-w7-dNT" firstAttribute="centerY" secondItem="4Az-6N-8u4" secondAttribute="centerY" id="O1R-k3-iBZ"/>
272 <constraint firstItem="ZyO-6K-2gA" firstAttribute="centerY" secondItem="4Az-6N-8u4" secondAttribute="centerY" id="fWH-tG-gSV"/>
273 </constraints>
274 </view>
275 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ORZ-El-owx">
276 <rect key="frame" x="0.0" y="80" width="140" height="40"/>
277 <subviews>
278 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="e63-8i-6aa">
279 <rect key="frame" x="85" y="4" width="51" height="31"/>
280 <constraints>
281 <constraint firstAttribute="width" secondItem="e63-8i-6aa" secondAttribute="height" multiplier="49:31" id="TTd-tM-PrG"/>
282 </constraints>
283 <color key="onTintColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
284 </switch>
285 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ๅˆๅฟƒ่€…" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RfO-1U-s4W" customClass="AutoTransLabel">
286 <rect key="frame" x="6" y="10.5" width="52" height="20.5"/>
287 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
288 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
289 <nil key="highlightedColor"/>
290 <userDefinedRuntimeAttributes>
291 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.begin"/>
292 </userDefinedRuntimeAttributes>
293 </label>
294 </subviews>
295 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
296 <constraints>
297 <constraint firstItem="RfO-1U-s4W" firstAttribute="leading" secondItem="ORZ-El-owx" secondAttribute="leading" constant="6" id="5Vq-B2-215"/>
298 <constraint firstAttribute="trailing" secondItem="e63-8i-6aa" secondAttribute="trailing" constant="6" id="NUX-0H-z8v"/>
299 <constraint firstAttribute="height" constant="40" id="PdI-3J-BTC"/>
300 <constraint firstItem="e63-8i-6aa" firstAttribute="centerY" secondItem="ORZ-El-owx" secondAttribute="centerY" id="Vxw-Vk-POY"/>
301 <constraint firstItem="RfO-1U-s4W" firstAttribute="centerY" secondItem="ORZ-El-owx" secondAttribute="centerY" id="tX1-Qb-pKG"/>
302 </constraints>
303 </view>
304 </subviews>
305 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
306 <constraints>
307 <constraint firstAttribute="height" constant="120" id="1Z3-Ap-Qv1"/>
308 <constraint firstAttribute="trailing" secondItem="ALk-sL-SXG" secondAttribute="trailing" id="2DO-V0-pH1"/>
309 <constraint firstItem="ORZ-El-owx" firstAttribute="top" secondItem="4Az-6N-8u4" secondAttribute="bottom" id="9ap-NH-2HO"/>
310 <constraint firstItem="ALk-sL-SXG" firstAttribute="top" secondItem="Kpa-HJ-7cE" secondAttribute="top" id="Lc0-Xq-rka"/>
311 <constraint firstItem="4Az-6N-8u4" firstAttribute="leading" secondItem="Kpa-HJ-7cE" secondAttribute="leading" id="PVG-jU-N5c"/>
312 <constraint firstAttribute="trailing" secondItem="ORZ-El-owx" secondAttribute="trailing" id="WYz-Kv-H08"/>
313 <constraint firstItem="ORZ-El-owx" firstAttribute="leading" secondItem="Kpa-HJ-7cE" secondAttribute="leading" id="a7E-Je-SkO"/>
314 <constraint firstAttribute="bottom" secondItem="ORZ-El-owx" secondAttribute="bottom" id="dr5-Tk-AAg"/>
315 <constraint firstAttribute="trailing" secondItem="4Az-6N-8u4" secondAttribute="trailing" id="wOX-wa-25X"/>
316 <constraint firstItem="4Az-6N-8u4" firstAttribute="top" secondItem="ALk-sL-SXG" secondAttribute="bottom" id="xgc-3W-TS2"/>
317 <constraint firstItem="ALk-sL-SXG" firstAttribute="leading" secondItem="Kpa-HJ-7cE" secondAttribute="leading" id="yrE-eZ-Vg4"/>
318 </constraints>
319 </view>
320 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="็›ฎๆจ™" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KTY-Ed-NJL" customClass="AutoTransLabel">
321 <rect key="frame" x="10" y="178" width="70" height="30"/>
322 <constraints>
323 <constraint firstAttribute="width" constant="70" id="Zlu-jK-x6p"/>
324 <constraint firstAttribute="height" constant="30" id="tVk-5e-QAY"/>
325 </constraints>
326 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
327 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
328 <nil key="highlightedColor"/>
329 <userDefinedRuntimeAttributes>
330 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.goal"/>
331 </userDefinedRuntimeAttributes>
332 </label>
333 <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="hWb-vU-yVd">
334 <rect key="frame" x="88" y="178" width="222" height="120"/>
335 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
336 <constraints>
337 <constraint firstAttribute="height" constant="120" id="iYo-mA-ZGR"/>
338 </constraints>
339 <fontDescription key="fontDescription" type="system" pointSize="14"/>
340 <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
341 <userDefinedRuntimeAttributes>
342 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
343 <integer key="value" value="10"/>
344 </userDefinedRuntimeAttribute>
345 </userDefinedRuntimeAttributes>
346 <connections>
347 <outlet property="delegate" destination="-1" id="fVh-oh-7St"/>
348 </connections>
349 </textView>
350 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ใƒžใƒƒใƒ—" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qdi-Na-zsj" customClass="AutoTransLabel">
351 <rect key="frame" x="10" y="313" width="70" height="30"/>
352 <constraints>
353 <constraint firstAttribute="height" constant="30" id="Ptf-0N-ewh"/>
354 <constraint firstAttribute="width" constant="70" id="mT3-FA-eev"/>
355 </constraints>
356 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
357 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
358 <nil key="highlightedColor"/>
359 <userDefinedRuntimeAttributes>
360 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.map"/>
361 </userDefinedRuntimeAttributes>
362 </label>
363 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="๏ผ‘ๆ—ฅ็›ฎๆจ™" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qfU-7x-uss" customClass="AutoTransLabel">
364 <rect key="frame" x="10" y="353" width="300" height="30"/>
365 <constraints>
366 <constraint firstAttribute="height" constant="30" id="9dB-8p-Wdv"/>
367 </constraints>
368 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
369 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
370 <nil key="highlightedColor"/>
371 <userDefinedRuntimeAttributes>
372 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.goal1day"/>
373 </userDefinedRuntimeAttributes>
374 </label>
375 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KEy-T1-mdK" customClass="AutoTransButton">
376 <rect key="frame" x="88" y="313" width="110" height="30"/>
377 <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
378 <constraints>
379 <constraint firstAttribute="height" constant="30" id="MWc-Aj-2JZ"/>
380 <constraint firstAttribute="width" constant="110" id="V16-pC-FRv"/>
381 </constraints>
382 <state key="normal" title="ใƒžใƒƒใƒ—ไฝœๆˆ">
383 <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
384 </state>
385 <userDefinedRuntimeAttributes>
386 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
387 <integer key="value" value="5"/>
388 </userDefinedRuntimeAttribute>
389 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.bt.map"/>
390 </userDefinedRuntimeAttributes>
391 </button>
392 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WALK" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3QV-Ov-PmX" customClass="AutoTransLabel">
393 <rect key="frame" x="10" y="391" width="70" height="30"/>
394 <constraints>
395 <constraint firstAttribute="height" constant="30" id="GSj-Tq-AsU"/>
396 <constraint firstAttribute="width" constant="70" id="uIv-Ty-eR2"/>
397 </constraints>
398 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
399 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
400 <nil key="highlightedColor"/>
401 <userDefinedRuntimeAttributes>
402 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.walk"/>
403 </userDefinedRuntimeAttributes>
404 </label>
405 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="4JZ-J2-3D9">
406 <rect key="frame" x="95" y="391" width="130" height="30"/>
407 <constraints>
408 <constraint firstAttribute="height" constant="30" id="JaF-D4-zT2"/>
409 <constraint firstAttribute="width" constant="130" id="qCj-P5-l4y"/>
410 </constraints>
411 <nil key="textColor"/>
412 <fontDescription key="fontDescription" type="system" pointSize="14"/>
413 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
414 </textField>
415 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="m" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o9b-Am-GTl">
416 <rect key="frame" x="240" y="391" width="70" height="30"/>
417 <constraints>
418 <constraint firstAttribute="width" constant="70" id="MN1-fg-mf1"/>
419 <constraint firstAttribute="height" constant="30" id="l7E-J3-Syw"/>
420 </constraints>
421 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
422 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
423 <nil key="highlightedColor"/>
424 <userDefinedRuntimeAttributes>
425 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.name"/>
426 </userDefinedRuntimeAttributes>
427 </label>
428 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RUN" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bq4-nh-Cxk" customClass="AutoTransLabel">
429 <rect key="frame" x="10" y="429" width="70" height="30"/>
430 <constraints>
431 <constraint firstAttribute="height" constant="30" id="MmK-Nk-eFt"/>
432 <constraint firstAttribute="width" constant="70" id="nuP-fj-jk2"/>
433 </constraints>
434 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
435 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
436 <nil key="highlightedColor"/>
437 <userDefinedRuntimeAttributes>
438 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.run"/>
439 </userDefinedRuntimeAttributes>
440 </label>
441 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="3aE-uP-KLS">
442 <rect key="frame" x="95" y="429" width="130" height="30"/>
443 <constraints>
444 <constraint firstAttribute="height" constant="30" id="37e-2c-qka"/>
445 <constraint firstAttribute="width" constant="130" id="owG-Ob-QnB"/>
446 </constraints>
447 <nil key="textColor"/>
448 <fontDescription key="fontDescription" type="system" pointSize="14"/>
449 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
450 </textField>
451 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="m" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CGA-Xm-2ll">
452 <rect key="frame" x="240" y="429" width="70" height="30"/>
453 <constraints>
454 <constraint firstAttribute="width" constant="70" id="6cf-Y6-Dwq"/>
455 <constraint firstAttribute="height" constant="30" id="dHv-kM-AX2"/>
456 </constraints>
457 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
458 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
459 <nil key="highlightedColor"/>
460 <userDefinedRuntimeAttributes>
461 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.name"/>
462 </userDefinedRuntimeAttributes>
463 </label>
464 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BIKE" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mvZ-9L-7a8" customClass="AutoTransLabel">
465 <rect key="frame" x="10" y="467" width="70" height="30"/>
466 <constraints>
467 <constraint firstAttribute="height" constant="30" id="hX2-SJ-SMG"/>
468 <constraint firstAttribute="width" constant="70" id="roN-jL-tXp"/>
469 </constraints>
470 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
471 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
472 <nil key="highlightedColor"/>
473 <userDefinedRuntimeAttributes>
474 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.bike"/>
475 </userDefinedRuntimeAttributes>
476 </label>
477 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="eOi-eo-GYn">
478 <rect key="frame" x="95" y="467" width="130" height="30"/>
479 <constraints>
480 <constraint firstAttribute="width" constant="130" id="SBb-jw-NHP"/>
481 <constraint firstAttribute="height" constant="30" id="ida-Ih-wRM"/>
482 </constraints>
483 <nil key="textColor"/>
484 <fontDescription key="fontDescription" type="system" pointSize="14"/>
485 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
486 </textField>
487 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="m" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="t6i-sV-ycx">
488 <rect key="frame" x="240" y="467" width="70" height="30"/>
489 <constraints>
490 <constraint firstAttribute="width" constant="70" id="DoG-hb-QbI"/>
491 <constraint firstAttribute="height" constant="30" id="pAs-GK-YE3"/>
492 </constraints>
493 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
494 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
495 <nil key="highlightedColor"/>
496 <userDefinedRuntimeAttributes>
497 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.lbl.name"/>
498 </userDefinedRuntimeAttributes>
499 </label>
500 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sef-8T-0hQ" customClass="AutoTransButton">
501 <rect key="frame" x="10" y="509" width="300" height="30"/>
502 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
503 <constraints>
504 <constraint firstAttribute="height" constant="30" id="8XP-Y1-hlJ"/>
505 </constraints>
506 <state key="normal" title="ใ‚ฐใƒซใƒผใƒ—ใ‚’ไฝœๆˆใ™ใ‚‹">
507 <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
508 </state>
509 <userDefinedRuntimeAttributes>
510 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
511 <integer key="value" value="5"/>
512 </userDefinedRuntimeAttribute>
513 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.createGr.bt.createGr"/>
514 </userDefinedRuntimeAttributes>
515 <connections>
516 <action selector="clickCreateGroup:" destination="-1" eventType="touchUpInside" id="n8x-KR-til"/>
517 </connections>
518 </button>
519 </subviews>
520 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
521 <constraints>
522 <constraint firstItem="KTY-Ed-NJL" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="10" id="08M-tc-J6o"/>
523 <constraint firstItem="3QV-Ov-PmX" firstAttribute="leading" secondItem="qfU-7x-uss" secondAttribute="leading" id="1CN-mt-xv7"/>
524 <constraint firstItem="3aE-uP-KLS" firstAttribute="top" secondItem="bq4-nh-Cxk" secondAttribute="top" id="1YH-oa-gPy"/>
525 <constraint firstAttribute="trailing" secondItem="qfU-7x-uss" secondAttribute="trailing" constant="10" id="1fh-fC-Tvd"/>
526 <constraint firstItem="t6i-sV-ycx" firstAttribute="leading" secondItem="eOi-eo-GYn" secondAttribute="trailing" constant="15" id="2d5-8C-v4q"/>
527 <constraint firstItem="4JZ-J2-3D9" firstAttribute="top" secondItem="3QV-Ov-PmX" secondAttribute="top" id="2rO-Pd-t8O"/>
528 <constraint firstItem="t6i-sV-ycx" firstAttribute="top" secondItem="mvZ-9L-7a8" secondAttribute="top" id="4rc-co-XRr"/>
529 <constraint firstAttribute="trailing" secondItem="sef-8T-0hQ" secondAttribute="trailing" constant="10" id="89W-o8-uLa"/>
530 <constraint firstItem="qdi-Na-zsj" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="10" id="8Cr-Gt-ts7"/>
531 <constraint firstItem="ZtU-mt-3Ov" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="8" id="8QA-ZH-zig"/>
532 <constraint firstItem="KTY-Ed-NJL" firstAttribute="top" secondItem="ONn-27-HqB" secondAttribute="bottom" constant="8" id="8cI-hb-3IU"/>
533 <constraint firstItem="CGA-Xm-2ll" firstAttribute="leading" secondItem="3aE-uP-KLS" secondAttribute="trailing" constant="15" id="AJD-KP-oLm"/>
534 <constraint firstItem="qfU-7x-uss" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="10" id="Akh-2h-Y5Z"/>
535 <constraint firstItem="mvZ-9L-7a8" firstAttribute="leading" secondItem="qfU-7x-uss" secondAttribute="leading" id="CyJ-DC-cmk"/>
536 <constraint firstAttribute="trailing" secondItem="hWb-vU-yVd" secondAttribute="trailing" constant="10" id="Gpv-Cf-wmA"/>
537 <constraint firstItem="ONn-27-HqB" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="10" id="GqQ-jG-2Ss"/>
538 <constraint firstItem="Kpa-HJ-7cE" firstAttribute="top" secondItem="ONn-27-HqB" secondAttribute="top" id="I8B-QJ-8Kw"/>
539 <constraint firstItem="ONn-27-HqB" firstAttribute="top" secondItem="pXO-K0-vne" secondAttribute="bottom" constant="10" id="IUV-iX-zqx"/>
540 <constraint firstItem="pXO-K0-vne" firstAttribute="leading" secondItem="ZtU-mt-3Ov" secondAttribute="trailing" constant="10" id="JQi-T2-HRB"/>
541 <constraint firstItem="o9b-Am-GTl" firstAttribute="top" secondItem="3QV-Ov-PmX" secondAttribute="top" id="Osm-tS-nSE"/>
542 <constraint firstItem="sef-8T-0hQ" firstAttribute="top" secondItem="t6i-sV-ycx" secondAttribute="bottom" constant="12" id="PNY-xc-4go"/>
543 <constraint firstItem="3aE-uP-KLS" firstAttribute="leading" secondItem="bq4-nh-Cxk" secondAttribute="trailing" constant="15" id="QhW-Vx-RNc"/>
544 <constraint firstItem="mvZ-9L-7a8" firstAttribute="top" secondItem="bq4-nh-Cxk" secondAttribute="bottom" constant="8" id="Qu7-jT-zZM"/>
545 <constraint firstItem="qdi-Na-zsj" firstAttribute="top" secondItem="KTY-Ed-NJL" secondAttribute="bottom" constant="105" id="Rbx-GC-D0X"/>
546 <constraint firstItem="eOi-eo-GYn" firstAttribute="leading" secondItem="mvZ-9L-7a8" secondAttribute="trailing" constant="15" id="Rcg-h2-Qfa"/>
547 <constraint firstItem="pXO-K0-vne" firstAttribute="top" secondItem="ZtU-mt-3Ov" secondAttribute="top" id="T8M-OQ-0Wk"/>
548 <constraint firstItem="o9b-Am-GTl" firstAttribute="leading" secondItem="4JZ-J2-3D9" secondAttribute="trailing" constant="15" id="UyE-qx-Mtp"/>
549 <constraint firstItem="4JZ-J2-3D9" firstAttribute="top" secondItem="3QV-Ov-PmX" secondAttribute="top" id="aRK-i9-XKN"/>
550 <constraint firstItem="hWb-vU-yVd" firstAttribute="top" secondItem="Kpa-HJ-7cE" secondAttribute="bottom" constant="8" id="chw-2w-QOv"/>
551 <constraint firstItem="sef-8T-0hQ" firstAttribute="leading" secondItem="9w1-87-U1W" secondAttribute="leading" constant="10" id="dfN-4U-9Oc"/>
552 <constraint firstItem="eOi-eo-GYn" firstAttribute="top" secondItem="mvZ-9L-7a8" secondAttribute="top" id="e8C-p7-obk"/>
553 <constraint firstItem="bq4-nh-Cxk" firstAttribute="top" secondItem="3QV-Ov-PmX" secondAttribute="bottom" constant="8" id="gjA-dw-4j6"/>
554 <constraint firstItem="4JZ-J2-3D9" firstAttribute="leading" secondItem="3QV-Ov-PmX" secondAttribute="trailing" constant="15" id="hCs-KK-0oG"/>
555 <constraint firstItem="Kpa-HJ-7cE" firstAttribute="width" secondItem="ONn-27-HqB" secondAttribute="width" id="i0I-s6-95a"/>
556 <constraint firstAttribute="trailing" secondItem="pXO-K0-vne" secondAttribute="trailing" constant="10" id="j2H-Na-egE"/>
557 <constraint firstItem="bq4-nh-Cxk" firstAttribute="leading" secondItem="qfU-7x-uss" secondAttribute="leading" id="kTU-cF-wdS"/>
558 <constraint firstItem="hWb-vU-yVd" firstAttribute="leading" secondItem="KTY-Ed-NJL" secondAttribute="trailing" constant="8" id="ka5-tK-yxs"/>
559 <constraint firstItem="eOi-eo-GYn" firstAttribute="top" secondItem="mvZ-9L-7a8" secondAttribute="top" id="klA-2z-2Kx"/>
560 <constraint firstItem="3aE-uP-KLS" firstAttribute="top" secondItem="bq4-nh-Cxk" secondAttribute="top" id="pdY-Ef-eHr"/>
561 <constraint firstItem="3QV-Ov-PmX" firstAttribute="top" secondItem="qfU-7x-uss" secondAttribute="bottom" constant="8" id="qLb-a1-eOB"/>
562 <constraint firstItem="Kpa-HJ-7cE" firstAttribute="leading" secondItem="ONn-27-HqB" secondAttribute="trailing" constant="20" id="rMt-rx-zDY"/>
563 <constraint firstItem="KEy-T1-mdK" firstAttribute="top" secondItem="hWb-vU-yVd" secondAttribute="bottom" constant="15" id="sIJ-Rk-gj3"/>
564 <constraint firstItem="ZtU-mt-3Ov" firstAttribute="top" secondItem="9w1-87-U1W" secondAttribute="top" constant="10" id="tBp-C6-fjS"/>
565 <constraint firstItem="CGA-Xm-2ll" firstAttribute="top" secondItem="bq4-nh-Cxk" secondAttribute="top" id="uaB-yp-z16"/>
566 <constraint firstItem="qfU-7x-uss" firstAttribute="top" secondItem="KEy-T1-mdK" secondAttribute="bottom" constant="10" id="w4X-lJ-yL1"/>
567 <constraint firstAttribute="trailing" secondItem="Kpa-HJ-7cE" secondAttribute="trailing" constant="10" id="wvh-Lk-tt9"/>
568 <constraint firstItem="KEy-T1-mdK" firstAttribute="leading" secondItem="qdi-Na-zsj" secondAttribute="trailing" constant="8" id="xGa-CF-V9a"/>
569 </constraints>
570 </view>
571 </subviews>
572 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
573 <constraints>
574 <constraint firstItem="9w1-87-U1W" firstAttribute="leading" secondItem="aKu-bd-xMP" secondAttribute="leading" id="BLm-dD-oN3"/>
575 <constraint firstItem="9w1-87-U1W" firstAttribute="centerY" secondItem="aKu-bd-xMP" secondAttribute="centerY" id="DT9-CK-3ZL"/>
576 <constraint firstItem="9w1-87-U1W" firstAttribute="top" secondItem="aKu-bd-xMP" secondAttribute="top" id="PZC-BJ-DLV"/>
577 <constraint firstAttribute="trailing" secondItem="9w1-87-U1W" secondAttribute="trailing" id="RDM-mt-Fjr"/>
578 <constraint firstAttribute="bottom" secondItem="9w1-87-U1W" secondAttribute="bottom" id="w42-vd-D7e"/>
579 <constraint firstItem="9w1-87-U1W" firstAttribute="centerX" secondItem="aKu-bd-xMP" secondAttribute="centerX" id="wJD-gn-ctq"/>
580 </constraints>
581 </scrollView>
582 </subviews>
583 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
584 <constraints>
585 <constraint firstItem="aKu-bd-xMP" firstAttribute="top" secondItem="QYv-QM-Bkk" secondAttribute="bottom" id="Q7l-Ra-0wb"/>
586 <constraint firstAttribute="trailing" secondItem="aKu-bd-xMP" secondAttribute="trailing" id="WAl-wE-FB4"/>
587 <constraint firstAttribute="trailing" secondItem="QYv-QM-Bkk" secondAttribute="trailing" id="XdX-OA-ALX"/>
588 <constraint firstItem="aKu-bd-xMP" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="cE7-y5-LL4"/>
589 <constraint firstItem="QYv-QM-Bkk" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="dAn-YE-2s3"/>
590 <constraint firstItem="QYv-QM-Bkk" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="fFF-bj-0uk"/>
591 <constraint firstAttribute="bottom" secondItem="aKu-bd-xMP" secondAttribute="bottom" id="oPE-ST-BIo"/>
592 </constraints>
593 <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
594 <point key="canvasLocation" x="26" y="125"/>
595 </view>
596 </objects>
597 <resources>
598 <image name="icon_menu" width="30" height="30"/>
599 <image name="today_back_button" width="73" height="37"/>
600 </resources>
601 </document>
602
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 -(id) initWithData : (NSDictionary *) dict { 13 -(id) initWithData : (NSDictionary *) dict {
14 if([dict objectForKey:@"group_id"] != nil) { 14 if([dict objectForKey:@"group_id"] != nil) {
15 self.groupID = [dict[@"group_id"] intValue]; 15 self.groupID = [dict[@"group_id"] intValue];
16 } 16 }
17 if([dict objectForKey:@"group_avatar"] != nil) { 17 if([dict objectForKey:@"group_avatar"] != nil) {
18 self.avatar = dict[@"group_avatar"]; 18 self.avatar = dict[@"group_avatar"];
19 } 19 }
20 if([dict objectForKey:@"created_at"] != nil) { 20 if([dict objectForKey:@"created_at"] != nil && ![[dict objectForKey:@"created_at"] isKindOfClass:[NSNull class]]) {
21 NSString *dateString = dict[@"created_at"]; 21 NSString *dateString = dict[@"created_at"];
22 self.createDate = [Utilities dateFromString:dateString withFormat:@"yyyy-MM-dd hh:mm:ss"]; 22 self.createDate = [Utilities dateFromString:dateString withFormat:@"yyyy-MM-dd hh:mm:ss"];
23 } 23 }
24 else { 24 else {
25 self.createDate = [NSDate date]; 25 self.createDate = [NSDate date];
26 } 26 }
27 if([dict objectForKey:@"num_search"] != nil) { 27 if([dict objectForKey:@"num_search"] != nil) {
28 self.numSearch = [dict[@"num_search"] intValue]; 28 self.numSearch = [dict[@"num_search"] intValue];
29 } 29 }
30 [self parseData:dict]; 30 [self parseData:dict];
31 return self; 31 return self;
32 } 32 }
33 33
34 -(id) initWithData : (NSDictionary *) dict andGroupID : (int) groupID { 34 -(id) initWithData : (NSDictionary *) dict andGroupID : (int) groupID {
35 self.groupID = groupID; 35 self.groupID = groupID;
36 if([dict objectForKey:@"join_group"] != nil && ![[dict objectForKey:@"join_group"] isKindOfClass:[NSNull class]]) { 36 if([dict objectForKey:@"join_group"] != nil && ![[dict objectForKey:@"join_group"] isKindOfClass:[NSNull class]]) {
37 self.isJoin = [dict[@"join_group"] boolValue]; 37 self.isJoin = [dict[@"join_group"] boolValue];
38 } 38 }
39 if([dict objectForKey:@"goal"] != nil && ![[dict objectForKey:@"goal"] isKindOfClass:[NSNull class]]) { 39 if([dict objectForKey:@"goal"] != nil && ![[dict objectForKey:@"goal"] isKindOfClass:[NSNull class]]) {
40 self.goal = dict[@"goal"]; 40 self.goal = dict[@"goal"];
41 } 41 }
42 else { 42 else {
43 self.goal = @""; 43 self.goal = @"";
44 } 44 }
45 if([dict objectForKey:@"walk_mode_goal"] != nil && ![[dict objectForKey:@"walk_mode_goal"] isKindOfClass:[NSNull class]]) { 45 if([dict objectForKey:@"walk_mode_goal"] != nil && ![[dict objectForKey:@"walk_mode_goal"] isKindOfClass:[NSNull class]]) {
46 self.walkGoal = [dict[@"walk_mode_goal"] intValue]; 46 self.walkGoal = [dict[@"walk_mode_goal"] intValue];
47 } 47 }
48 if([dict objectForKey:@"run_mode_goal"] != nil && ![[dict objectForKey:@"run_mode_goal"] isKindOfClass:[NSNull class]]) { 48 if([dict objectForKey:@"run_mode_goal"] != nil && ![[dict objectForKey:@"run_mode_goal"] isKindOfClass:[NSNull class]]) {
49 self.runGoal = [dict[@"run_mode_goal"] intValue]; 49 self.runGoal = [dict[@"run_mode_goal"] intValue];
50 } 50 }
51 if([dict objectForKey:@"bike_mode_goal"] != nil && ![[dict objectForKey:@"bike_mode_goal"] isKindOfClass:[NSNull class]]) { 51 if([dict objectForKey:@"bike_mode_goal"] != nil && ![[dict objectForKey:@"bike_mode_goal"] isKindOfClass:[NSNull class]]) {
52 self.bikeGoal = [dict[@"bike_mode_goal"] intValue]; 52 self.bikeGoal = [dict[@"bike_mode_goal"] intValue];
53 } 53 }
54 if([dict objectForKey:@"step_mode_goal"] != nil && ![[dict objectForKey:@"step_mode_goal"] isKindOfClass:[NSNull class]]) { 54 if([dict objectForKey:@"step_mode_goal"] != nil && ![[dict objectForKey:@"step_mode_goal"] isKindOfClass:[NSNull class]]) {
55 self.stepGoal = [dict[@"step_mode_goal"] intValue]; 55 self.stepGoal = [dict[@"step_mode_goal"] intValue];
56 } 56 }
57 if([dict objectForKey:@"gym_mode_goal"] != nil && ![[dict objectForKey:@"gym_mode_goal"] isKindOfClass:[NSNull class]]) { 57 if([dict objectForKey:@"gym_mode_goal"] != nil && ![[dict objectForKey:@"gym_mode_goal"] isKindOfClass:[NSNull class]]) {
58 self.gymGoal = [dict[@"gym_mode_goal"] intValue]; 58 self.gymGoal = [dict[@"gym_mode_goal"] intValue];
59 } 59 }
60 if([dict objectForKey:@"beginer_mode_goal"] != nil && ![[dict objectForKey:@"beginer_mode_goal"] isKindOfClass:[NSNull class]]) { 60 if([dict objectForKey:@"beginer_mode_goal"] != nil && ![[dict objectForKey:@"beginer_mode_goal"] isKindOfClass:[NSNull class]]) {
61 self.beginGoal = [dict[@"beginer_mode_goal"] intValue]; 61 self.beginGoal = [dict[@"beginer_mode_goal"] intValue];
62 } 62 }
63 [self parseData:dict]; 63 [self parseData:dict];
64 return self; 64 return self;
65 } 65 }
66 66
67 -(void) parseData : (NSDictionary *) dict { 67 -(void) parseData : (NSDictionary *) dict {
68 if([dict objectForKey:@"group_name"] != nil) { 68 if([dict objectForKey:@"group_name"] != nil) {
69 self.name = dict[@"group_name"]; 69 self.name = dict[@"group_name"];
70 } 70 }
71 if([dict objectForKey:@"walk_mode_active"] != nil && ![[dict objectForKey:@"walk_mode_active"] isKindOfClass:[NSNull class]]) { 71 if([dict objectForKey:@"walk_mode_active"] != nil && ![[dict objectForKey:@"walk_mode_active"] isKindOfClass:[NSNull class]]) {
72 self.walkMode = [dict[@"walk_mode_active"] boolValue]; 72 self.walkMode = [dict[@"walk_mode_active"] boolValue];
73 } 73 }
74 if([dict objectForKey:@"run_mode_active"] != nil && ![[dict objectForKey:@"run_mode_active"] isKindOfClass:[NSNull class]]) { 74 if([dict objectForKey:@"run_mode_active"] != nil && ![[dict objectForKey:@"run_mode_active"] isKindOfClass:[NSNull class]]) {
75 self.runMode = [dict[@"run_mode_active"] boolValue]; 75 self.runMode = [dict[@"run_mode_active"] boolValue];
76 } 76 }
77 if([dict objectForKey:@"bike_mode_active"] != nil && ![[dict objectForKey:@"bike_mode_active"] isKindOfClass:[NSNull class]]) { 77 if([dict objectForKey:@"bike_mode_active"] != nil && ![[dict objectForKey:@"bike_mode_active"] isKindOfClass:[NSNull class]]) {
78 self.bikeMode = [dict[@"bike_mode_active"] boolValue]; 78 self.bikeMode = [dict[@"bike_mode_active"] boolValue];
79 } 79 }
80 if([dict objectForKey:@"step_mode_active"] != nil && ![[dict objectForKey:@"step_mode_active"] isKindOfClass:[NSNull class]]) { 80 if([dict objectForKey:@"step_mode_active"] != nil && ![[dict objectForKey:@"step_mode_active"] isKindOfClass:[NSNull class]]) {
81 self.stepMode = [dict[@"step_mode_active"] boolValue]; 81 self.stepMode = [dict[@"step_mode_active"] boolValue];
82 } 82 }
83 if([dict objectForKey:@"gym_mode_active"] != nil && ![[dict objectForKey:@"gym_mode_active"] isKindOfClass:[NSNull class]]) { 83 if([dict objectForKey:@"gym_mode_active"] != nil && ![[dict objectForKey:@"gym_mode_active"] isKindOfClass:[NSNull class]]) {
84 self.gymMode = [dict[@"gym_mode_active"] boolValue]; 84 self.gymMode = [dict[@"gym_mode_active"] boolValue];
85 } 85 }
86 if([dict objectForKey:@"beginer_mode_active"] != nil && ![[dict objectForKey:@"beginer_mode_active"] isKindOfClass:[NSNull class]]) { 86 if([dict objectForKey:@"beginer_mode_active"] != nil && ![[dict objectForKey:@"beginer_mode_active"] isKindOfClass:[NSNull class]]) {
87 self.beginMode = [dict[@"beginer_mode_active"] boolValue]; 87 self.beginMode = [dict[@"beginer_mode_active"] boolValue];
88 } 88 }
89 } 89 }
90 90
91 -(void) updateDate : (GroupObject *) obj { 91 -(void) updateDate : (GroupObject *) obj {
92 self.name = obj.name; 92 self.name = obj.name;
93 self.walkMode = obj.walkMode; 93 self.walkMode = obj.walkMode;
94 self.runMode = obj.runMode; 94 self.runMode = obj.runMode;
95 self.bikeMode = obj.bikeMode; 95 self.bikeMode = obj.bikeMode;
96 self.stepMode = obj.stepMode; 96 self.stepMode = obj.stepMode;
97 self.gymMode = obj.gymMode; 97 self.gymMode = obj.gymMode;
98 self.beginMode = obj.beginMode; 98 self.beginMode = obj.beginMode;
99 self.isJoin = obj.isJoin; 99 self.isJoin = obj.isJoin;
100 self.goal = obj.goal; 100 self.goal = obj.goal;
101 self.walkGoal = obj.walkGoal; 101 self.walkGoal = obj.walkGoal;
102 self.runGoal = obj.runGoal; 102 self.runGoal = obj.runGoal;
103 self.bikeGoal = obj.bikeGoal; 103 self.bikeGoal = obj.bikeGoal;
104 self.stepGoal = obj.stepGoal; 104 self.stepGoal = obj.stepGoal;
105 self.gymGoal = obj.gymGoal; 105 self.gymGoal = obj.gymGoal;
106 self.beginGoal = obj.beginGoal; 106 self.beginGoal = obj.beginGoal;
107 } 107 }
108 108
109 @end 109 @end
110 110
LifeLog/LifeLog/Localizable.strings
No preview for this file type
LifeLog/LifeLog/SearchGroupViewController.h
1 // 1 //
2 // SearchGroupViewController.h 2 // SearchGroupViewController.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 <UIKit/UIKit.h> 9 #import <UIKit/UIKit.h>
10 #import "BaseTableViewController.h" 10 #import "BaseTableViewController.h"
11 11
12 @interface SearchGroupViewController : BaseTableViewController<UITextFieldDelegate> 12 @interface SearchGroupViewController : BaseTableViewController<UITextFieldDelegate> {
13 NSTimer *timerSearch;
14 }
13 15
14 @property (weak, nonatomic) IBOutlet UITextField *textFieldSearch; 16 @property (weak, nonatomic) IBOutlet UITextField *textFieldSearch;
15 17
16 - (IBAction)clickBack:(id)sender; 18 - (IBAction)clickBack:(id)sender;
17 - (IBAction)clickSearch:(id)sender; 19 - (IBAction)clickSearch:(id)sender;
18 - (IBAction)clickCreateGroup:(id)sender; 20 - (IBAction)clickCreateGroup:(id)sender;
19 21
20 @end 22 @end
21 23
LifeLog/LifeLog/SearchGroupViewController.m
1 // 1 //
2 // SearchGroupViewController.m 2 // SearchGroupViewController.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 "SearchGroupViewController.h" 9 #import "SearchGroupViewController.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 "SearchGroupTableViewCell.h" 16 #import "SearchGroupTableViewCell.h"
17 #import "CreateGroupViewController.h"
17 #import "GroupDetailViewController.h" 18 #import "GroupDetailViewController.h"
18 19
19 @interface SearchGroupViewController () 20 @interface SearchGroupViewController ()
20 21
21 @end 22 @end
22 23
23 @implementation SearchGroupViewController 24 @implementation SearchGroupViewController
24 25
25 - (void)viewDidLoad { 26 - (void)viewDidLoad {
26 [super viewDidLoad]; 27 [super viewDidLoad];
27 [self callRequestToUpdateData]; 28 [self callRequestToUpdateData];
28 29
29 //register nib for table view 30 //register nib for table view
30 [self.tableBase registerNib:[UINib nibWithNibName:@"SearchGroupTableViewCell" bundle:nil] forCellReuseIdentifier:@"SearchGroupCell"]; 31 [self.tableBase registerNib:[UINib nibWithNibName:@"SearchGroupTableViewCell" bundle:nil] forCellReuseIdentifier:@"SearchGroupCell"];
31 } 32 }
32 33
33 - (void)didReceiveMemoryWarning { 34 - (void)didReceiveMemoryWarning {
34 [super didReceiveMemoryWarning]; 35 [super didReceiveMemoryWarning];
35 // Dispose of any resources that can be recreated. 36 // Dispose of any resources that can be recreated.
36 } 37 }
37 38
38 #pragma mark IBAction 39 #pragma mark IBAction
39 40
40 - (IBAction)clickBack:(id)sender { 41 - (IBAction)clickBack:(id)sender {
41 [self.navigationController popViewControllerAnimated:true]; 42 [self.navigationController popViewControllerAnimated:true];
42 } 43 }
43 44
44 - (IBAction)clickSearch:(id)sender { 45 - (IBAction)clickSearch:(id)sender {
46 [self.view endEditing:true];
45 [self resetData]; 47 [self resetData];
46 } 48 }
47 49
48 - (IBAction)clickCreateGroup:(id)sender { 50 - (IBAction)clickCreateGroup:(id)sender {
49 51 CreateGroupViewController * create = [[CreateGroupViewController alloc] init];
52 create.createGroupSuccess = ^(GroupObject *object){
53 GroupDetailViewController * detail = [[GroupDetailViewController alloc] init];
54 [detail setGroup:object];
55 [self.navigationController pushViewController:detail animated:true];
56 };
57 [self.navigationController pushViewController:create animated:true];
50 } 58 }
51 59
52 #pragma mark UITableView Delegate 60 #pragma mark UITableView Delegate
53 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 61 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
54 SearchGroupTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"SearchGroupCell"]; 62 SearchGroupTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"SearchGroupCell"];
55 GroupObject *object = [_curDataList objectAtIndex:indexPath.row]; 63 GroupObject *object = [_curDataList objectAtIndex:indexPath.row];
56 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) { 64 if(object.avatar && ![object.avatar isKindOfClass:[NSNull class]]) {
57 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]]; 65 [cell.imgAvatar sd_setImageWithURL:[NSURL URLWithString:[Utilities getImageLink:object.avatar]]];
58 } 66 }
59 else { 67 else {
60 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]]; 68 [cell.imgAvatar setImage:[UIImage imageNamed:@"avatar_default"]];
61 } 69 }
62 cell.lblName.text = object.name; 70 cell.lblName.text = object.name;
63 return cell; 71 return cell;
64 } 72 }
65 73
66 -(void) scrollViewDidScroll:(UIScrollView *)scrollView { 74 -(void) scrollViewDidScroll:(UIScrollView *)scrollView {
67 [self.view endEditing:true]; 75 [self.view endEditing:true];
68 } 76 }
69 77
70 -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 78 -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
71 GroupDetailViewController * detail = [[GroupDetailViewController alloc] init]; 79 GroupDetailViewController * detail = [[GroupDetailViewController alloc] init];
72 [detail setGroup:[_curDataList objectAtIndex:indexPath.row]]; 80 [detail setGroup:[_curDataList objectAtIndex:indexPath.row]];
73 [self.navigationController pushViewController:detail animated:true]; 81 [self.navigationController pushViewController:detail animated:true];
74 } 82 }
75 83
76 #pragma mark UITextField Delegate 84 #pragma mark UITextField Delegate
85 -(BOOL) textFieldShouldReturn:(UITextField *)textField {
86 [self.view endEditing:true];
87 return true;
88 }
89
77 -(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 90 -(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
78 [self resetData]; 91 if(timerSearch != nil) {
92 [timerSearch invalidate];
93 }
94 timerSearch = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(resetData) userInfo:nil repeats:false];
79 return true; 95 return true;
80 } 96 }
81 97
82 #pragma mark Private Function 98 #pragma mark Private Function
83 -(void) callRequestToUpdateData { 99 -(void) callRequestToUpdateData {
84 [super callRequestToUpdateData]; 100 [super callRequestToUpdateData];
85 101
86 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken]; 102 NSString * token = [[NSUserDefaults standardUserDefaults] stringForKey:kToken];
87 MBProgressHUD *hudView = nil; 103 MBProgressHUD *hudView = nil;
88 if(_curPage == 1 && !self.refreshControl.isRefreshing) { 104 if(_curPage == 1 && !self.refreshControl.isRefreshing) {
89 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true]; 105 hudView = [MBProgressHUD showHUDAddedTo:self.view animated:true];
90 } 106 }
91 [[ServerAPI server] searchGroup:token withKey:self.textFieldSearch.text andPage:_curPage CompletionHandler:^(NSArray *array, NSError *error) { 107 [[ServerAPI server] searchGroup:token withKey:self.textFieldSearch.text andPage:_curPage CompletionHandler:^(NSArray *array, NSError *error) {
92 dispatch_async(dispatch_get_main_queue(), ^{ 108 dispatch_async(dispatch_get_main_queue(), ^{
93 if(hudView != nil) { 109 if(hudView != nil) {
94 [hudView hideAnimated:true]; 110 [hudView hideAnimated:true];
95 } 111 }
96 }); 112 });
97 SearchGroupViewController __weak *weakSelf = self; 113 SearchGroupViewController __weak *weakSelf = self;
98 [weakSelf updateTableData:array error:error]; 114 [weakSelf updateTableData:array error:error];
99 }]; 115 }];
100 } 116 }
101 @end 117 @end
102 118
LifeLog/LifeLog/SearchGroupViewController.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="SearchGroupViewController"> 11 <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SearchGroupViewController">
12 <connections> 12 <connections>
13 <outlet property="tableBase" destination="yF3-ZN-ebL" id="WYE-g2-1iW"/> 13 <outlet property="tableBase" destination="yF3-ZN-ebL" id="WYE-g2-1iW"/>
14 <outlet property="textFieldSearch" destination="ZV5-M6-gge" id="my5-ga-rV2"/> 14 <outlet property="textFieldSearch" destination="ZV5-M6-gge" id="my5-ga-rV2"/>
15 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> 15 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
16 </connections> 16 </connections>
17 </placeholder> 17 </placeholder>
18 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> 18 <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
19 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> 19 <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
20 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> 20 <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
21 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 21 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
22 <subviews> 22 <subviews>
23 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YHv-ES-wQ0" userLabel="ViewHeader"> 23 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YHv-ES-wQ0" userLabel="ViewHeader">
24 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 24 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
25 <subviews> 25 <subviews>
26 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SNS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qQF-tf-31d" customClass="AutoTransLabel"> 26 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SNS" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qQF-tf-31d" customClass="AutoTransLabel">
27 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/> 27 <rect key="frame" x="0.0" y="0.0" width="375" height="46"/>
28 <fontDescription key="fontDescription" type="system" pointSize="17"/> 28 <fontDescription key="fontDescription" type="system" pointSize="17"/>
29 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 29 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
30 <nil key="highlightedColor"/> 30 <nil key="highlightedColor"/>
31 <userDefinedRuntimeAttributes> 31 <userDefinedRuntimeAttributes>
32 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.title"/> 32 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.title"/>
33 </userDefinedRuntimeAttributes> 33 </userDefinedRuntimeAttributes>
34 </label> 34 </label>
35 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pK9-Nf-LNR"> 35 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pK9-Nf-LNR">
36 <rect key="frame" x="0.0" y="5" width="70" height="36"/> 36 <rect key="frame" x="0.0" y="5" width="70" height="36"/>
37 <constraints> 37 <constraints>
38 <constraint firstAttribute="width" constant="70" id="Kdt-q3-40K"/> 38 <constraint firstAttribute="width" constant="70" id="Kdt-q3-40K"/>
39 </constraints> 39 </constraints>
40 <state key="normal" image="today_back_button"/> 40 <state key="normal" image="today_back_button"/>
41 <connections> 41 <connections>
42 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="Z3f-Fd-CEc"/> 42 <action selector="clickBack:" destination="-1" eventType="touchUpInside" id="Z3f-Fd-CEc"/>
43 </connections> 43 </connections>
44 </button> 44 </button>
45 <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PkV-G3-Fru"> 45 <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PkV-G3-Fru">
46 <rect key="frame" x="330" y="0.0" width="45" height="46"/> 46 <rect key="frame" x="330" y="0.0" width="45" height="46"/>
47 <constraints> 47 <constraints>
48 <constraint firstAttribute="width" constant="45" id="7W6-Cl-TRS"/> 48 <constraint firstAttribute="width" constant="45" id="7W6-Cl-TRS"/>
49 </constraints> 49 </constraints>
50 <state key="normal" image="icon_menu"/> 50 <state key="normal" image="icon_menu"/>
51 </button> 51 </button>
52 </subviews> 52 </subviews>
53 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> 53 <color key="backgroundColor" red="0.098039215690000001" green="0.098039215690000001" blue="0.098039215690000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
54 <constraints> 54 <constraints>
55 <constraint firstItem="pK9-Nf-LNR" firstAttribute="leading" secondItem="YHv-ES-wQ0" secondAttribute="leading" id="84D-o2-cdT"/> 55 <constraint firstItem="pK9-Nf-LNR" firstAttribute="leading" secondItem="YHv-ES-wQ0" secondAttribute="leading" id="84D-o2-cdT"/>
56 <constraint firstAttribute="trailing" secondItem="qQF-tf-31d" secondAttribute="trailing" id="BMv-VR-p7j"/> 56 <constraint firstAttribute="trailing" secondItem="qQF-tf-31d" secondAttribute="trailing" id="BMv-VR-p7j"/>
57 <constraint firstAttribute="trailing" secondItem="PkV-G3-Fru" secondAttribute="trailing" id="CiO-zw-1XR"/> 57 <constraint firstAttribute="trailing" secondItem="PkV-G3-Fru" secondAttribute="trailing" id="CiO-zw-1XR"/>
58 <constraint firstAttribute="height" constant="46" id="KDJ-I2-eMi"/> 58 <constraint firstAttribute="height" constant="46" id="KDJ-I2-eMi"/>
59 <constraint firstItem="qQF-tf-31d" firstAttribute="leading" secondItem="YHv-ES-wQ0" secondAttribute="leading" id="heq-vX-GHv"/> 59 <constraint firstItem="qQF-tf-31d" firstAttribute="leading" secondItem="YHv-ES-wQ0" secondAttribute="leading" id="heq-vX-GHv"/>
60 <constraint firstAttribute="bottom" secondItem="qQF-tf-31d" secondAttribute="bottom" id="iJg-Q2-eLi"/> 60 <constraint firstAttribute="bottom" secondItem="qQF-tf-31d" secondAttribute="bottom" id="iJg-Q2-eLi"/>
61 <constraint firstItem="qQF-tf-31d" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" id="l3t-CY-3zr"/> 61 <constraint firstItem="qQF-tf-31d" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" id="l3t-CY-3zr"/>
62 <constraint firstAttribute="bottom" secondItem="pK9-Nf-LNR" secondAttribute="bottom" constant="5" id="lJY-v6-1cM"/> 62 <constraint firstAttribute="bottom" secondItem="pK9-Nf-LNR" secondAttribute="bottom" constant="5" id="lJY-v6-1cM"/>
63 <constraint firstItem="pK9-Nf-LNR" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" constant="5" id="ppE-r0-ai7"/> 63 <constraint firstItem="pK9-Nf-LNR" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" constant="5" id="ppE-r0-ai7"/>
64 <constraint firstItem="PkV-G3-Fru" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" id="ptk-1B-s3f"/> 64 <constraint firstItem="PkV-G3-Fru" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="top" id="ptk-1B-s3f"/>
65 <constraint firstAttribute="bottom" secondItem="PkV-G3-Fru" secondAttribute="bottom" id="yNR-37-Qmd"/> 65 <constraint firstAttribute="bottom" secondItem="PkV-G3-Fru" secondAttribute="bottom" id="yNR-37-Qmd"/>
66 </constraints> 66 </constraints>
67 </view> 67 </view>
68 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="ZV5-M6-gge"> 68 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="ZV5-M6-gge">
69 <rect key="frame" x="16" y="86" width="209" height="30"/> 69 <rect key="frame" x="16" y="86" width="209" height="30"/>
70 <nil key="textColor"/> 70 <nil key="textColor"/>
71 <fontDescription key="fontDescription" type="system" pointSize="14"/> 71 <fontDescription key="fontDescription" type="system" pointSize="14"/>
72 <textInputTraits key="textInputTraits"/> 72 <textInputTraits key="textInputTraits"/>
73 <connections> 73 <connections>
74 <outlet property="delegate" destination="-1" id="Wzs-Wc-gd1"/> 74 <outlet property="delegate" destination="-1" id="Wzs-Wc-gd1"/>
75 </connections> 75 </connections>
76 </textField> 76 </textField>
77 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="V72-De-hhR" customClass="AutoTransButton"> 77 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="V72-De-hhR" customClass="AutoTransButton">
78 <rect key="frame" x="250" y="86" width="110" height="30"/> 78 <rect key="frame" x="250" y="86" width="110" height="30"/>
79 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 79 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
80 <constraints> 80 <constraints>
81 <constraint firstAttribute="height" constant="30" id="plQ-aS-bwK"/> 81 <constraint firstAttribute="height" constant="30" id="plQ-aS-bwK"/>
82 <constraint firstAttribute="width" constant="110" id="w47-Tg-vYC"/> 82 <constraint firstAttribute="width" constant="110" id="w47-Tg-vYC"/>
83 </constraints> 83 </constraints>
84 <fontDescription key="fontDescription" type="system" pointSize="13"/> 84 <fontDescription key="fontDescription" type="system" pointSize="13"/>
85 <state key="normal" title="ๆคœ็ดข"> 85 <state key="normal" title="ๆคœ็ดข">
86 <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 86 <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
87 </state> 87 </state>
88 <userDefinedRuntimeAttributes> 88 <userDefinedRuntimeAttributes>
89 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 89 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
90 <integer key="value" value="5"/> 90 <integer key="value" value="5"/>
91 </userDefinedRuntimeAttribute> 91 </userDefinedRuntimeAttribute>
92 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.bt.search"/> 92 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.bt.search"/>
93 </userDefinedRuntimeAttributes> 93 </userDefinedRuntimeAttributes>
94 <connections> 94 <connections>
95 <action selector="clickSearch:" destination="-1" eventType="touchUpInside" id="WPo-6j-0K1"/> 95 <action selector="clickSearch:" destination="-1" eventType="touchUpInside" id="WPo-6j-0K1"/>
96 </connections> 96 </connections>
97 </button> 97 </button>
98 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Rb5-To-ffT" customClass="AutoTransButton"> 98 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Rb5-To-ffT" customClass="AutoTransButton">
99 <rect key="frame" x="250" y="131" width="110" height="30"/> 99 <rect key="frame" x="250" y="131" width="110" height="30"/>
100 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 100 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
101 <constraints> 101 <constraints>
102 <constraint firstAttribute="height" constant="30" id="Cwt-yy-rcp"/> 102 <constraint firstAttribute="height" constant="30" id="Cwt-yy-rcp"/>
103 </constraints> 103 </constraints>
104 <fontDescription key="fontDescription" type="system" pointSize="13"/> 104 <fontDescription key="fontDescription" type="system" pointSize="13"/>
105 <state key="normal" title="ใ‚ฐใƒซใƒผใƒ—ไฝœๆˆ"> 105 <state key="normal" title="ใ‚ฐใƒซใƒผใƒ—ไฝœๆˆ">
106 <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 106 <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
107 </state> 107 </state>
108 <userDefinedRuntimeAttributes> 108 <userDefinedRuntimeAttributes>
109 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius"> 109 <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
110 <integer key="value" value="5"/> 110 <integer key="value" value="5"/>
111 </userDefinedRuntimeAttribute> 111 </userDefinedRuntimeAttribute>
112 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.bt.createGr"/> 112 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.bt.createGr"/>
113 </userDefinedRuntimeAttributes> 113 </userDefinedRuntimeAttributes>
114 <connections> 114 <connections>
115 <action selector="clickCreateGroup:" destination="-1" eventType="touchUpOutside" id="iYI-HB-mhb"/> 115 <action selector="clickCreateGroup:" destination="-1" eventType="touchUpInside" id="J9P-5a-SrT"/>
116 </connections> 116 </connections>
117 </button> 117 </button>
118 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="70" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="yF3-ZN-ebL"> 118 <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="70" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="yF3-ZN-ebL">
119 <rect key="frame" x="0.0" y="176" width="375" height="441"/> 119 <rect key="frame" x="0.0" y="176" width="375" height="441"/>
120 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> 120 <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
121 <connections> 121 <connections>
122 <outlet property="dataSource" destination="-1" id="tKB-Uq-esC"/> 122 <outlet property="dataSource" destination="-1" id="tKB-Uq-esC"/>
123 <outlet property="delegate" destination="-1" id="88z-Bd-dz0"/> 123 <outlet property="delegate" destination="-1" id="88z-Bd-dz0"/>
124 </connections> 124 </connections>
125 </tableView> 125 </tableView>
126 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="ใ‚ชใ‚นใ‚นใƒกใ‚ฐใƒซใƒผใƒ—" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YIq-l4-77c" customClass="AutoTransLabel"> 126 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="ใ‚ชใ‚นใ‚นใƒกใ‚ฐใƒซใƒผใƒ—" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YIq-l4-77c" customClass="AutoTransLabel">
127 <rect key="frame" x="16" y="54" width="343" height="21"/> 127 <rect key="frame" x="16" y="54" width="343" height="21"/>
128 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> 128 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
129 <fontDescription key="fontDescription" type="system" pointSize="17"/> 129 <fontDescription key="fontDescription" type="system" pointSize="17"/>
130 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> 130 <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
131 <nil key="highlightedColor"/> 131 <nil key="highlightedColor"/>
132 <userDefinedRuntimeAttributes> 132 <userDefinedRuntimeAttributes>
133 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.lbl.title"/> 133 <userDefinedRuntimeAttribute type="string" keyPath="localizeKey" value="lifelog.searchGr.lbl.title"/>
134 </userDefinedRuntimeAttributes> 134 </userDefinedRuntimeAttributes>
135 </label> 135 </label>
136 </subviews> 136 </subviews>
137 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/> 137 <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
138 <constraints> 138 <constraints>
139 <constraint firstItem="yF3-ZN-ebL" firstAttribute="top" secondItem="Rb5-To-ffT" secondAttribute="bottom" constant="15" id="2wi-jL-dso"/> 139 <constraint firstItem="yF3-ZN-ebL" firstAttribute="top" secondItem="Rb5-To-ffT" secondAttribute="bottom" constant="15" id="2wi-jL-dso"/>
140 <constraint firstAttribute="trailing" secondItem="V72-De-hhR" secondAttribute="trailing" constant="15" id="342-Ur-sPT"/> 140 <constraint firstAttribute="trailing" secondItem="V72-De-hhR" secondAttribute="trailing" constant="15" id="342-Ur-sPT"/>
141 <constraint firstItem="YHv-ES-wQ0" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="3ft-ch-v8f"/> 141 <constraint firstItem="YHv-ES-wQ0" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="3ft-ch-v8f"/>
142 <constraint firstItem="Rb5-To-ffT" firstAttribute="top" secondItem="V72-De-hhR" secondAttribute="bottom" constant="15" id="Hic-jl-Ndk"/> 142 <constraint firstItem="Rb5-To-ffT" firstAttribute="top" secondItem="V72-De-hhR" secondAttribute="bottom" constant="15" id="Hic-jl-Ndk"/>
143 <constraint firstAttribute="bottom" secondItem="yF3-ZN-ebL" secondAttribute="bottom" constant="50" id="Nad-2Y-mrb"/> 143 <constraint firstAttribute="bottom" secondItem="yF3-ZN-ebL" secondAttribute="bottom" constant="50" id="Nad-2Y-mrb"/>
144 <constraint firstItem="V72-De-hhR" firstAttribute="leading" secondItem="ZV5-M6-gge" secondAttribute="trailing" constant="25" id="Pv6-Li-O07"/> 144 <constraint firstItem="V72-De-hhR" firstAttribute="leading" secondItem="ZV5-M6-gge" secondAttribute="trailing" constant="25" id="Pv6-Li-O07"/>
145 <constraint firstAttribute="trailing" secondItem="YHv-ES-wQ0" secondAttribute="trailing" id="crv-XZ-T34"/> 145 <constraint firstAttribute="trailing" secondItem="YHv-ES-wQ0" secondAttribute="trailing" id="crv-XZ-T34"/>
146 <constraint firstItem="yF3-ZN-ebL" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="f6n-Zr-w64"/> 146 <constraint firstItem="yF3-ZN-ebL" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="f6n-Zr-w64"/>
147 <constraint firstItem="Rb5-To-ffT" firstAttribute="trailing" secondItem="V72-De-hhR" secondAttribute="trailing" id="fHS-Kk-Ew0"/> 147 <constraint firstItem="Rb5-To-ffT" firstAttribute="trailing" secondItem="V72-De-hhR" secondAttribute="trailing" id="fHS-Kk-Ew0"/>
148 <constraint firstItem="YHv-ES-wQ0" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="fdM-w1-hOo"/> 148 <constraint firstItem="YHv-ES-wQ0" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="fdM-w1-hOo"/>
149 <constraint firstItem="V72-De-hhR" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="bottom" constant="40" id="hlc-vb-EVo"/> 149 <constraint firstItem="V72-De-hhR" firstAttribute="top" secondItem="YHv-ES-wQ0" secondAttribute="bottom" constant="40" id="hlc-vb-EVo"/>
150 <constraint firstItem="Rb5-To-ffT" firstAttribute="width" secondItem="V72-De-hhR" secondAttribute="width" id="jtP-uw-vkF"/> 150 <constraint firstItem="Rb5-To-ffT" firstAttribute="width" secondItem="V72-De-hhR" secondAttribute="width" id="jtP-uw-vkF"/>
151 <constraint firstItem="ZV5-M6-gge" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="kxD-e8-dYm"/> 151 <constraint firstItem="ZV5-M6-gge" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="16" id="kxD-e8-dYm"/>
152 <constraint firstAttribute="trailing" secondItem="yF3-ZN-ebL" secondAttribute="trailing" id="rZv-uL-RZ3"/> 152 <constraint firstAttribute="trailing" secondItem="yF3-ZN-ebL" secondAttribute="trailing" id="rZv-uL-RZ3"/>
153 <constraint firstItem="V72-De-hhR" firstAttribute="top" secondItem="ZV5-M6-gge" secondAttribute="top" id="voZ-Kp-Zm3"/> 153 <constraint firstItem="V72-De-hhR" firstAttribute="top" secondItem="ZV5-M6-gge" secondAttribute="top" id="voZ-Kp-Zm3"/>
154 </constraints> 154 </constraints>
155 <point key="canvasLocation" x="24.5" y="52.5"/> 155 <point key="canvasLocation" x="24.5" y="52.5"/>
156 </view> 156 </view>
157 </objects> 157 </objects>
158 <resources> 158 <resources>
159 <image name="icon_menu" width="30" height="30"/> 159 <image name="icon_menu" width="30" height="30"/>
160 <image name="today_back_button" width="73" height="37"/> 160 <image name="today_back_button" width="73" height="37"/>
161 </resources> 161 </resources>
162 </document> 162 </document>
163 163
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 38
38 #pragma mark - SNS Screen Function 39 #pragma mark - SNS Screen Function
39 /* 40 /*
40 Get tweet of group and get recent tweet is same API 41 Get tweet of group and get recent tweet is same API
41 If groupID equal -1, it will request recent tweet. Otherwise will request tweet of group 42 If groupID equal -1, it will request recent tweet. Otherwise will request tweet of group
42 */ 43 */
43 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 44 - (void) requestTweetsList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
44 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 45 - (void) searchGroup:(NSString *)token withKey:(NSString *)key andPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
45 46
46 #pragma mark - Group Function 47 #pragma mark - Group Function
47 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion; 48 - (void) getGroupDetail:(NSString *)token withGroupID:(int)groupID CompletionHandler:(void (^)(GroupObject *, NSError *)) completion;
48 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion; 49 - (void) requestMemberList:(NSString *)token groupID: (int) groupID withPage:(int)page CompletionHandler:(void (^)(NSArray *, NSError *)) completion;
49 50
50 #pragma mark - Common API 51 #pragma mark - Common API
51 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion; 52 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion;
52 @end 53 @end
53 54
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 {
651 NSString *url = [kServerAddress stringByAppendingFormat:@"api/groups/newGroup"];
652 NSLog(@"requestCreateGroup link %@", url);
653 NSDictionary * dict = @{@"group_name":group.name,
654 @"goal":group.goal,
655 @"walk_mode_active":[NSNumber numberWithBool:group.walkMode],
656 @"run_mode_active":[NSNumber numberWithBool:group.runMode],
657 @"bike_mode_active":[NSNumber numberWithBool:group.bikeMode],
658 @"step_mode_active":[NSNumber numberWithBool:group.stepMode],
659 @"gym_mode_active":[NSNumber numberWithBool:group.gymMode],
660 @"beginer_mode_active":[NSNumber numberWithBool:group.beginMode],
661 @"walk_mode_goal":[NSNumber numberWithBool:group.walkGoal],
662 @"run_mode_goal":[NSNumber numberWithBool:group.runGoal],
663 @"bike_mode_goal":[NSNumber numberWithBool:group.bikeGoal]};
664
665 [self _request:url method:@"POST" token:token paras:dict completion:^(NSData *data, NSError *error) {
666
667 if (completion == NULL) {
668 return ;
669 }
670
671 if (error == nil)
672 {
673 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
674 NSLog(@"%@", dataResult);
675 int status = [dataResult[@"status"] intValue];
676 if (status == 1) { // status = 1 success
677 if(dataResult[@"result"] != nil) {
678 NSDictionary * dict = dataResult[@"result"];
679 group.groupID = [dict[@"group_id"] intValue];
680 completion(group, nil);
681 }
682 else {
683 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
684 completion(nil, errorObject);
685 }
686 }
687 else {
688 NSString *message = dataResult[@"message"];
689 if (message == nil) {
690 message = @"Unknown error";
691 }
692
693 if ([message isEqualToString:@"Token is invalid"]) {
694 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
695 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
696 [self requestCreateGroup:tokenNew withGroup:group CompletionHandler:completion];
697 }
698 else {
699 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
700 completion(nil, errorObject);
701 }
702 }
703 }
704 else
705 {
706 completion(nil, error);
707 }
708 }];
709 }
710
650 - (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 {
651 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID]; 712 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/detail/%d", groupID];
652 NSLog(@"getGroupDetail link %@", url); 713 NSLog(@"getGroupDetail link %@", url);
653 [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) {
654 715
655 if (completion == NULL) { 716 if (completion == NULL) {
656 return ; 717 return ;
657 } 718 }
658 719
659 if (error == nil) 720 if (error == nil)
660 { 721 {
661 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 722 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
662 NSLog(@"%@", dataResult); 723 NSLog(@"%@", dataResult);
663 int status = [dataResult[@"status"] intValue]; 724 int status = [dataResult[@"status"] intValue];
664 if (status == 1) { // status = 1 success 725 if (status == 1) { // status = 1 success
665 if(dataResult[@"result"] != nil) { 726 if(dataResult[@"result"] != nil) {
666 NSArray * array = dataResult[@"result"]; 727 NSArray * array = dataResult[@"result"];
667 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID]; 728 GroupObject * object = [[GroupObject alloc] initWithData:array[0] andGroupID:groupID];
668 completion(object, nil); 729 completion(object, nil);
669 } 730 }
670 else { 731 else {
671 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"}];
672 completion(nil, errorObject); 733 completion(nil, errorObject);
673 } 734 }
674 } 735 }
675 else { 736 else {
676 NSString *message = dataResult[@"message"]; 737 NSString *message = dataResult[@"message"];
677 if (message == nil) { 738 if (message == nil) {
678 message = @"Unknown error"; 739 message = @"Unknown error";
679 } 740 }
680 741
681 if ([message isEqualToString:@"Token is invalid"]) { 742 if ([message isEqualToString:@"Token is invalid"]) {
682 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 743 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
683 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 744 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
684 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion]; 745 [self getGroupDetail:tokenNew withGroupID:groupID CompletionHandler:completion];
685 } 746 }
686 else { 747 else {
687 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 748 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
688 completion(nil, errorObject); 749 completion(nil, errorObject);
689 } 750 }
690 } 751 }
691 } 752 }
692 else 753 else
693 { 754 {
694 completion(nil, error); 755 completion(nil, error);
695 } 756 }
696 }]; 757 }];
697 } 758 }
698 759
699 - (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 {
700 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];
701 NSLog(@"requestMemberList link %@ page %d", url, page); 762 NSLog(@"requestMemberList link %@ page %d", url, page);
702 763
703 [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) {
704 if (completion == NULL) { 765 if (completion == NULL) {
705 return ; 766 return ;
706 } 767 }
707 768
708 if (error == nil) 769 if (error == nil)
709 { 770 {
710 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 771 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
711 NSLog(@"%@", dataResult); 772 NSLog(@"%@", dataResult);
712 int status = [dataResult[@"status"] intValue]; 773 int status = [dataResult[@"status"] intValue];
713 if (status == 1) { // status = 1 success 774 if (status == 1) { // status = 1 success
714 if(dataResult[@"result"] != nil) { 775 if(dataResult[@"result"] != nil) {
715 NSArray * array = dataResult[@"result"]; 776 NSArray * array = dataResult[@"result"];
716 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init]; 777 NSMutableArray * arrayTweets = [[NSMutableArray alloc] init];
717 for(NSDictionary * dict in array) { 778 for(NSDictionary * dict in array) {
718 MemberObject * object = [[MemberObject alloc] initWithData:dict]; 779 MemberObject * object = [[MemberObject alloc] initWithData:dict];
719 [arrayTweets addObject:object]; 780 [arrayTweets addObject:object];
720 } 781 }
721 completion(arrayTweets, nil); 782 completion(arrayTweets, nil);
722 } 783 }
723 else { 784 else {
724 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"}];
725 completion(nil, errorObject); 786 completion(nil, errorObject);
726 } 787 }
727 } 788 }
728 else { 789 else {
729 NSString *message = dataResult[@"message"]; 790 NSString *message = dataResult[@"message"];
730 if (message == nil) { 791 if (message == nil) {
731 message = @"Unknown error"; 792 message = @"Unknown error";
732 } 793 }
733 794
734 if ([message isEqualToString:@"Token is invalid"]) { 795 if ([message isEqualToString:@"Token is invalid"]) {
735 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 796 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
736 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 797 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
737 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion]; 798 [self requestMemberList:tokenNew groupID:groupID withPage:page CompletionHandler:completion];
738 } 799 }
739 else { 800 else {
740 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 801 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
741 completion(nil, errorObject); 802 completion(nil, errorObject);
742 } 803 }
743 } 804 }
744 } 805 }
745 else 806 else
746 { 807 {
747 completion(nil, error); 808 completion(nil, error);
748 } 809 }
749 }]; 810 }];
750 } 811 }
751 812
752 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion { 813 - (void) requestJoinGroup:(NSString *)token groupID: (int) groupID CompletionHandler:(void (^)(NSError *)) completion {
753 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"]; 814 NSString *url = [kServerAddress stringByAppendingFormat:@"api/sns/group/join"];
754 NSLog(@"requestJoinGroup link %@", url); 815 NSLog(@"requestJoinGroup link %@", url);
755 816
756 searchTask = [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) { 817 searchTask = [self _request:url method:@"POST" token:token paras:@{@"group_id": [NSNumber numberWithInt:groupID]} completion:^(NSData *data, NSError *error) {
757 searchTask = nil; 818 searchTask = nil;
758 if (completion == NULL) { 819 if (completion == NULL) {
759 return ; 820 return ;
760 } 821 }
761 822
762 if (error == nil) 823 if (error == nil)
763 { 824 {
764 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 825 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
765 NSLog(@"%@", dataResult); 826 NSLog(@"%@", dataResult);
766 int status = [dataResult[@"status"] intValue]; 827 int status = [dataResult[@"status"] intValue];
767 if (status == 1) { // status = 1 success 828 if (status == 1) { // status = 1 success
768 if(dataResult[@"result"] != nil) { 829 if(dataResult[@"result"] != nil) {
769 completion(nil); 830 completion(nil);
770 } 831 }
771 else { 832 else {
772 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 833 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
773 completion(errorObject); 834 completion(errorObject);
774 } 835 }
775 } 836 }
776 else { 837 else {
777 NSString *message = dataResult[@"message"]; 838 NSString *message = dataResult[@"message"];
778 if ([message isEqualToString:@"Token is invalid"]) { 839 if ([message isEqualToString:@"Token is invalid"]) {
779 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES]; 840 [self performSelectorOnMainThread:@selector(checkToken) withObject:nil waitUntilDone:YES];
780 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken]; 841 NSString *tokenNew = [[NSUserDefaults standardUserDefaults] objectForKey:kToken];
781 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion]; 842 [self requestJoinGroup:tokenNew groupID:groupID CompletionHandler:completion];
782 } 843 }
783 else { 844 else {
784 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 845 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
785 completion(errorObject); 846 completion(errorObject);
786 } 847 }
787 } 848 }
788 } 849 }
789 else 850 else
790 { 851 {
791 completion(error); 852 completion(error);
792 } 853 }
793 }]; 854 }];
794 } 855 }
795 856
796 #pragma mark - Common API 857 #pragma mark - Common API
797 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion { 858 - (void)refreshToken: (NSString *)userID CompletionHandler:(void (^)(NSString *, NSError *))completion {
798 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) { 859 [self _request:[kServerAddress stringByAppendingFormat: @"refreshToken"] method:@"POST" token:@"" paras:@{@"userId":userID} completion:^(NSData *data, NSError *error) {
799 860
800 if (completion == NULL) { 861 if (completion == NULL) {
801 return ; 862 return ;
802 } 863 }
803 864
804 if (error == nil) 865 if (error == nil)
805 { 866 {
806 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error]; 867 NSDictionary *dataResult = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingAllowFragments error: &error];
807 868
808 int status = [dataResult[@"status"] intValue]; 869 int status = [dataResult[@"status"] intValue];
809 if (status == 1) { // status = 1 success 870 if (status == 1) { // status = 1 success
810 NSArray *arrayResult = dataResult[@"result"]; 871 NSArray *arrayResult = dataResult[@"result"];
811 if (arrayResult.count > 0) { 872 if (arrayResult.count > 0) {
812 NSString *token = arrayResult[0]; 873 NSString *token = arrayResult[0];
813 completion(token, nil); 874 completion(token, nil);
814 } 875 }
815 else { 876 else {
816 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}]; 877 NSError *errorObject = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":@"Unknown Error"}];
817 completion(nil, errorObject); 878 completion(nil, errorObject);
818 } 879 }
819 880
820 } 881 }
821 else { // status = 0 error 882 else { // status = 0 error
822 NSString *message = dataResult[@"message"]; 883 NSString *message = dataResult[@"message"];
823 if (message == nil) { 884 if (message == nil) {
824 message = @"Unknown error"; 885 message = @"Unknown error";
825 } 886 }
826 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}]; 887 NSError *loginFaild = [NSError errorWithDomain:@"LifeLog_Domain" code:-1 userInfo:@{@"message":message}];
827 completion(nil, loginFaild); 888 completion(nil, loginFaild);
828 } 889 }
829 } 890 }
830 else 891 else
831 { 892 {
832 completion(nil, error); 893 completion(nil, error);
833 } 894 }
834 }]; 895 }];
835 } 896 }
836 897
837 #pragma mark - Private Function 898 #pragma mark - Private Function
838 - (void) checkToken { 899 - (void) checkToken {
839 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil]; 900 // [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationToken object:nil];
840 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser]; 901 NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:kUser];
841 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data]; 902 User *user = (User *)[NSKeyedUnarchiver unarchiveObjectWithData:data];
842 if (user != nil) { 903 if (user != nil) {
843 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) { 904 [self refreshToken:user.user_id CompletionHandler:^(NSString *token, NSError *error) {
844 if (error == nil) { 905 if (error == nil) {
845 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken]; 906 [[NSUserDefaults standardUserDefaults] setObject:token forKey:kToken];
846 [[NSUserDefaults standardUserDefaults] synchronize]; 907 [[NSUserDefaults standardUserDefaults] synchronize];
847 } 908 }
848 }]; 909 }];
849 } 910 }
850 } 911 }
851 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary 912 - (NSData *) _encodeDictionary: (NSDictionary *) dictionary
852 { 913 {
853 NSMutableArray *parts = [[NSMutableArray alloc] init]; 914 NSMutableArray *parts = [[NSMutableArray alloc] init];
854 for (id key in dictionary) 915 for (id key in dictionary)
855 { 916 {
856 NSString *encodedValue = [[dictionary[key] description] urlencode]; 917 NSString *encodedValue = [[dictionary[key] description] urlencode];
857 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; 918 NSString *encodedKey = [[key description] urlencode];//[[key description] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
858 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue]; 919 NSString *part = [NSString stringWithFormat: @"%@=%@", encodedKey, encodedValue];
859 [parts addObject:part]; 920 [parts addObject:part];
860 } 921 }
861 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"]; 922 NSString *encodedDictionary = [parts componentsJoinedByString:@"&"];
862 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding]; 923 return [encodedDictionary dataUsingEncoding: NSUTF8StringEncoding];
863 } 924 }
864 925
865 - (NSURLSessionDataTask *) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion 926 - (NSURLSessionDataTask *) _request:(NSString *)address method:(NSString *)method token:(NSString *) token paras:(NSDictionary *)paras completion:(void (^)(NSData *data, NSError *error))completion
866 { 927 {
867 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]]; 928 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:address]];
868 request.HTTPMethod = method; 929 request.HTTPMethod = method;
869 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"]; 930 [request setValue: @"application/json" forHTTPHeaderField: @"Accept"];
870 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"]; 931 [request setValue: @"application/json" forHTTPHeaderField: @"Content-Type"];
871 if(token != nil && ![token isEqual: @""]) { 932 if(token != nil && ![token isEqual: @""]) {
872 [request setValue: token forHTTPHeaderField: @"token"]; 933 [request setValue: token forHTTPHeaderField: @"token"];
873 } 934 }
874 [request setTimeoutInterval:self.timeOutInterval]; 935 [request setTimeoutInterval:self.timeOutInterval];
875 936
876 if (paras != nil) 937 if (paras != nil)
877 { 938 {
878 NSData *encodedData = [self _encodeDictionary: paras]; 939 NSData *encodedData = [self _encodeDictionary: paras];
879 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"]; 940 [request setValue: [NSString stringWithFormat: @"%lu", (unsigned long) encodedData.length] forHTTPHeaderField: @"Content-Length"];
880 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"]; 941 [request setValue: @"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField: @"Content-Type"];
881 [request setHTTPBody: encodedData]; 942 [request setHTTPBody: encodedData];
882 } 943 }
883 944
884 NSURLSession *session = [NSURLSession sharedSession]; 945 NSURLSession *session = [NSURLSession sharedSession];
885 NSURLSessionDataTask *task = [session dataTaskWithRequest:request 946 NSURLSessionDataTask *task = [session dataTaskWithRequest:request
886 completionHandler: 947 completionHandler:
887 ^(NSData *data, NSURLResponse *response, NSError *error) { 948 ^(NSData *data, NSURLResponse *response, NSError *error) {
888 if (completion == NULL) { 949 if (completion == NULL) {
889 return ; 950 return ;
890 } 951 }
891 if (error == nil) 952 if (error == nil)
892 { 953 {
893 completion(data, nil); 954 completion(data, nil);
894 } 955 }
895 else 956 else
896 { 957 {
897 completion(nil, error); 958 completion(nil, error);
898 } 959 }
899 }]; 960 }];
900 [task resume]; 961 [task resume];
901 return task; 962 return task;
902 } 963 }
903 964
904 -(void)waitUntilDone:(void(^)(void))waitBlock { 965 -(void)waitUntilDone:(void(^)(void))waitBlock {
905 //use your statement or call method here 966 //use your statement or call method here
906 if(waitBlock){ 967 if(waitBlock){
907 waitBlock(); 968 waitBlock();
908 } 969 }
909 } 970 }
910 971
911 @end 972 @end
912 973