Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone对象C-数据、对象和数组_Iphone_Objective C_Cocoa_Arrays_Object - Fatal编程技术网

Iphone对象C-数据、对象和数组

Iphone对象C-数据、对象和数组,iphone,objective-c,cocoa,arrays,object,Iphone,Objective C,Cocoa,Arrays,Object,因此,我是一个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[

因此,我是一个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中创建泛型对象的参考。有人能帮忙吗?

好吧,假设你正在用cocoa中的iphone或mac做一些事情,你可以简单地将NSObject子类化为objective-C中的基类

您需要一个.h和.m,因此对于您的示例,它将类似于: 注意,我使用slotId而不是id,因为id是objective-c中的关键字

插槽.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
它定义了一个具有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];

如果仅使用此对象实例存储命名值,则可以改用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 addObject: obj];
要从字典中获取整数/布尔值,请执行以下操作:

int i = [[obj objectForKey: @"id"] intValue];
BOOL isEmpty = [[obj objectForKey: @"isEmpty"] boolValue];

这正是我在这里发布之前开始做的事情。明天早上我要试一试。谢谢我不太清楚你的意思,Charles,在Objective-C中有一些数据类型,几乎所有的对象类型,你必须引用它们作为指针。因此,指针的使用实际上是由您试图引用的内容以及为这些类型分配内存的方式决定的。再次感谢您,我非常感谢您的知识。我在下面贴了另一个问题。