Форум программистов, компьютерный форум CyberForum.ru

Значения из dictionary - Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242
15.08.2013, 02:47     Значения из dictionary #1
Помогите. Все делаю по уроку в книге "пайлон д пайлон т программируем для iphone и ipad" . Все делаю как там. Работа со словарями (глава 5), приложение работает, запускается, но во втором представлении все поля пустые, хотя ключи указал. На первом контролере надписи к ячейкам страницы отображаются правильно. Получается дальше первого контролера, значения dictionary (ключи) не используются
Как связать plist со вторым представлением?
Вложения
Тип файла: zip app.zip (80.1 Кб, 2 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.08.2013, 07:07     Значения из dictionary #2
У Вас же книга есть, вы "делаете как там". Тем более, имея такой ник, как-то даже спрашивать про такие вещи не комильфо... :/
Какие есть предположения, по какой причине оно может не работать?
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242
15.08.2013, 09:35  [ТС]     Значения из dictionary #3
Я не знаю причину по которой оно не работает. Все вроде бы сходится, (ну разве что в книге используется xib, а у меня storyboard, но связи я проверил, все вроде бы одинаково), только у автора отображается информация, а у меня нет
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.08.2013, 13:37     Значения из dictionary #4
А данные как передаете между контроллерами?
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242
15.08.2013, 13:38  [ТС]     Значения из dictionary #5
Помогите пожалуйста, для завершения проекта осталось связать все контролеры. Для связи хочу использовать словари. Приложение являет собой информацию про сотрудников (анкетные данные) для каждого сотрудника будут поля ФИО, телефон, емеил, словари с ключами подходят наотлично. Но я не знаю (и не могу найти информацию) как работать с plist. Есть уроки про добавление, использование, но у меня даже значения во втором котроллере не отображаются, и я уже не знаю что делать.

drinkMasterViewController.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#import "drinkMasterViewController.h"
#import "DrinkConstants.h"
#import "drinkDetailViewController.h"
 
@interface drinkMasterViewController () {
    //NSMutableArray *_objects;
}
@end
 
@implementation drinkMasterViewController
@synthesize drinks = drinks_;
- (void)awakeFromNib
{
    [super awakeFromNib];
}
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    NSString *path = [[NSBundle mainBundle] pathForResource:@"DrinkDirections" ofType:@"plist"];
    drinks_ = [[NSMutableArray alloc]initWithContentsOfFile:path];
    
    self.navigationItem.leftBarButtonItem = self.editButtonItem;
 
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)];
    self.navigationItem.rightBarButtonItem = addButton;
}
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
/*- (void)insertNewObject:(id)sender
{
    if (!_objects) {
        _objects = [[NSMutableArray alloc] init];
    }
    [_objects insertObject:[NSDate date] atIndex:0];
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}*/
 
#pragma mark - Table View
 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return  1;
}
 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   return [self.drinks count];
}
/*#pragma mark -
#pragma mark Table view delegate
 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    drinkDetailViewController *detailViewController = [[drinkDetailViewController alloc] initWithNibName:@"DrinkDetailViewController" bundle:nil];
    detailViewController.drink = [self.drinks objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:detailViewController animated:YES];
    //[detailViewController release];
}
*/
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.textLabel.text = [[self.drinks objectAtIndex:indexPath.row]objectForKey:NAME_KEY];
    return cell;
}
 
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
 
 
 
@end
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//
//  drinkDetailViewController.m
//  Drnk
//
//  Created by Admin on 14/08/2013.
//  Copyright (c) 2013 Admin. All rights reserved.
//
 
#import "drinkDetailViewController.h"
#import "DrinkConstants.h"
 
@interface drinkDetailViewController ()
//- (void)configureView;
@end
 
@implementation drinkDetailViewController
 
@synthesize drink=drink_, nameTextField=nameTextField_, ingredientTextView=ingredientTextView_, directionsTextView=directionsTextView_;
 
//#pragma mark - Managing the detail item
/*-(void)viewWillAppear:(BOOL)animated
{
    //[super viewWillAppear:animated];
    self.nameTextField.text = [self.drink objectForKey:NAME_KEY];
    NSLog(@"%@",NAME_KEY);
    self.ingredientTextView.text = [self.drink objectForKey:INSTRUCTIONS_KEY];
    self.directionsTextView.text = [self.drink objectForKey:DIRECTIONS_KEY];
    labels.text = [self.drink objectForKey:NAME_KEY];
}*/
/*- (void)setDetailItem:(id)newDetailItem
{
    if (_detailItem != newDetailItem) {
        _detailItem = newDetailItem;
        
        // Update the view.
        [self configureView];
    }
}
 
- (void)configureView
{
    // Update the user interface for the detail item.
 
    if (self.detailItem) {
        self.detailDescriptionLabel.text = [self.detailItem description];
    }
}
*/
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.nameTextField.text = [self.drink objectForKey:NAME_KEY];
    NSLog(@"%@",NAME_KEY);
    self.ingredientTextView.text = [self.drink objectForKey:INSTRUCTIONS_KEY];
    self.directionsTextView.text = [self.drink objectForKey:DIRECTIONS_KEY];
    labels.text = [self.drink objectForKey:NAME_KEY];
    labels.text = @"XYU";
    
    
    // Do any additional setup after loading the view, typically from a nib.
    //[self configureView];
}
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
@end
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.08.2013, 13:52     Значения из dictionary #6
Ну а где в drinkMasterViewController передача отдельного drink'a в drinkDetailViewController, когда происходит segue?
А нету...
А должна быть. Вы если книжкой пользуетесь и сами не понимаете как оно работает, то делайте по книжке. Строго по книжке. Ибо
Цитата Сообщение от Slava-hacker32 Посмотреть сообщение
(ну разве что в книге используется xib, а у меня storyboard, но связи я проверил, все вроде бы одинаково)
"Вроде бы" - не одинаково.

когда посылается сообщение для пуша контроллера используя segue, Вы должны обработать и передать свои данные:
Objective-C
1
2
3
4
5
6
7
8
9
10
#pragma mark - Segue
 
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
  id vc = segue.destinationViewController;
  if ([vc isKindOfClass:[drinkDetailViewController class]]) {
    NSIndexPath *indexPath = [self.collectionView indexPathForCell:sender];
    ((drinkDetailViewController*)vc).drink = self.drinks[indexPath.row];
  }
}
PS:
1. drinkDetailViewController - классы с Большой Буквы.
2. @synthesize drinks = drinks_; не drinks_, а _drinks. Это важно. И в новых версия Xcode с новыми компиляторами synthesize можно опустить.
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
15.08.2013, 13:58     Значения из dictionary #7
Slava-hacker32, если вы изучаете новую для себя вещь, то какого же рожна от книги отступаете? Чтобы жизнь мёдом не казалась? Автор использует xibs, вы storyboard замутили. Либо отложите это на то время, когда разберетесь с основами, либо другую книжку возьмите. Просто совет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2013, 14:03     Значения из dictionary
Еще ссылки по теме:

C# Поиск значения по ключу в Dictionary

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242
15.08.2013, 14:03  [ТС]     Значения из dictionary #8
Спасибо, буду разбираться

Добавлено через 3 минуты
Цитата Сообщение от mobidevelop Посмотреть сообщение
Slava-hacker32, если вы изучаете новую для себя вещь, то какого же рожна от книги отступаете? Чтобы жизнь мёдом не казалась? Автор использует xibs, вы storyboard замутили. Либо отложите это на то время, когда разберетесь с основами, либо другую книжку возьмите. Просто совет.
Мне просто более удобнее изучать материал, решая конкретную задачу. Для реализации этого нужно сделать так. А просто повторить по книжке не столь эффективно (для меня, может кому то хватает того что в книге)
Yandex
Объявления
15.08.2013, 14:03     Значения из dictionary
Ответ Создать тему
Опции темы

Текущее время: 07:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru