Задача C Учебная электронная книга, ошибка кода (noob) - PullRequest
1 голос
/ 16 января 2012

Я очень плохо знаком с Objective C, так как наш бизнес только что переключился с Java, поэтому я начал читать электронную книгу Objective-CFundamentals.pdf, написанную Кристофером К. Фэйрберном, Йоханнесом Фаренкругом, Коллином Руффенахом

Но я продолжаю сталкиваться с множеством проблем (и я знаю, почему, потому что книга основана на iPhone 4.3, а последний xcode на 5, что требуется для моей работы). Одна проблема (которая кажется такой простой), на которой я застрял, если кто-то может помочь, я был бы признателен.

Заранее спасибо! :)

РЕДАКТИРОВАТЬ: я опубликую код ниже, код кода непосредственно из примера электронной книги, таким образом, это не я напечатал его, хотя я следовал за электронной книгой к письму, это дает мне эту ошибку, и там нет помочь в решении этой проблемы в электронной книге :( СПАСИБО за быстрый ответ!

The RootMasterViewControler.h

#import <UIKit/UIKit.h>

@interface RootMasterViewController : UITableViewController {
NSDictionary *cityMappings;
}

@end

typedef enum PropertyType {
Unit,
TownHouse,
Mansion
} PropertyType;

typedef struct {
NSString *address;
PropertyType type;
double weeklyRentalPrice;
} RentalProperty;

RootMasterViewControler.m

- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {

return ARRAY_SIZE(properties);
}


- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView
                         dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc]
             initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]autorelease];
}
RentalProperty *details = &properties[indexPath.row];
int indexOfComma = [details->address rangeOfString:@","].location;
NSString *address = [details->address
                       substringToIndex:indexOfComma];
NSString *city = [details->address
                  substringFromIndex:indexOfComma + 2];
cell.textLabel.text = address;
if ([city isEqual:@"Clifton"])
    cell.imageView.image = [UIImage imageNamed:@"mountain.png"];
else if ([city isEqual:@"Sumner"])
    cell.imageView.image = [UIImage imageNamed:@"sea.png"];
else
    cell.imageView.image = [UIImage imageNamed:@"city.png"];
cell.detailTextLabel.text =
[NSString stringWithFormat:@"Rents for $%0.2f per week",
 details->weeklyRentalPrice];
return cell;
}

Ошибка 1) @ * адрес "Ожидаемое выражение" Ошибка 2) @ cell.textLabel.text "Использование необъявленного идентификатора 'адрес'

Я почти ничего не знаю об Obj-C, и я следую учебной электронной книге Obj-C к письму. Спасибо за любую помощь.

http://imageshack.us/photo/my-images/252/screenshot20120113at443.png/

1 Ответ

0 голосов
/ 16 января 2012

Вы не можете вызвать детали-> адрес, как если бы это была структура C; Объекты Objective-C - это больше, чем структуры C. Вам нужно было бы использовать [details getAddress], если у вас был объявлен setter / getter / property, или details.address для доступа к адресу в классе details.

Во-вторых, вы не можете объявить RentalProperty * details = & properties [indexPath.row]; как это, так как вы просите указатель для хранения ссылки. Вам нужно удалить &; опять же, объекты Objective-C - это гораздо больше, чем структуры C.

В-третьих, простая ошибка, вы хотите сказать, что книга объясняет на основе iOS 4.3, но последняя версия iOS - 5. Вы сказали, что последняя версия XCode - Xcode - IDE, а iOS - мобильная ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...