Iphone Object C - данные, объекты и массивы - PullRequest
0 голосов
/ 15 мая 2009

Итак, я парень из Flash и пытаюсь преобразовать следующий код в объект C:

    var slot:Object = new Object();
    slot.id         = i;
    slot.xPos       = 25*i;
    slot.yPos       = 25*i;
    slot.isEmpty    = False;
// push object to array
    arrGrid.push(slot);

Позже я могу переопределить как:

arrGrid[0].isEmpty = True;

Мне не удается найти ссылку на создание универсальных объектов в объекте C. Может ли кто-нибудь помочь?

Ответы [ 2 ]

9 голосов
/ 15 мая 2009

Хорошо, если вы что-то делаете с iphone или mac в какао, вы можете просто создать подкласс NSObject (базовый класс в target-c).

Вам нужны .h и .m, поэтому для вашего примера это будет что-то вроде: (Обратите внимание, что я использовал slotId вместо id, потому что id является ключевым словом в target-c)

Slot.h

// Slot.h 
@interface Slot : NSObject {
  NSInteger slotId;
  float xPos;
  float yPos;
  BOOL empty;
}

@property NSInteger slotId;
@property float xPos;
@property float yPos;
@property BOOL empty;

@end

// Slot.m
#import "Slot.h"

@implementation Slot

@synthesize slotId;
@synthesize xPos;
@synthesize yPos;
@synthesize empty;

@end

Это определяет простой объект Slot с 4 свойствами, доступ к которым можно получить с помощью точечной нотации, такой как:

s = [[Slot alloc] init];
s.empty = YES;
s.xPos = 1.0;
s.yPos = 1.0;

Существует множество вариантов, какие типы данных вы используете, как вы определяете свойства и т. Д., В зависимости от того, с какими данными вы имеете дело.

Если вы хотите добавить объект слота в массив, один простой пример:

// create an array and add a slot object
NSMutableArray *arr = [NSMutableArray array];
Slot *slot = [[Slot alloc] init];
[arr addObject:slot];

// set the slot to empty
[[arr objectAtIndex:0] setEmpty:YES];
1 голос
/ 15 мая 2009

Если вы используете этот экземпляр Object только для хранения именованных значений, вы можете вместо этого использовать экземпляр NSMutableDictionary, хотя вам нужно будет обернуть целочисленные значения экземплярами NSNumber:

NSMutableDictionary * obj = [NSMutableDictionary dictionary];
[obj setObject: [NSNumber numberWithInt: i] forKey: @"id"];
[obj setObject: [NSNumber numberWithInt: i*25] forKey: @"xPos"];
[obj setObject: [NSNumber numberWithInt: i*25] forKey: @"yPos"];
[obj setObject: [NSNumber numberWithBool: NO] forKey: @"isEmpty"];

Затем вы добавили бы их в NSMutableArray, выделенный с помощью [NSMutableArray array] или аналогичный:

[array addObject: obj];

Чтобы получить целочисленные / логические значения из словаря, вы должны сделать следующее:

int i = [[obj objectForKey: @"id"] intValue];
BOOL isEmpty = [[obj objectForKey: @"isEmpty"] boolValue];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...