Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
如何解析Objective-C中的对象数组? 来自C++的,这里是我的问题:_Objective C_Ios_Arrays_While Loop - Fatal编程技术网

如何解析Objective-C中的对象数组? 来自C++的,这里是我的问题:

如何解析Objective-C中的对象数组? 来自C++的,这里是我的问题:,objective-c,ios,arrays,while-loop,Objective C,Ios,Arrays,While Loop,我已创建此类型的对象: Size *one = [[Size alloc] initWithX: 3 andY: 1]; Size *two = [[Size alloc] initWithX: 4 andY: 7]; // etc... Size *thirtythree = [[Size alloc] initWithX: 5 andY: 9]; (每个对象都有一个@property int x;和@property int y;) 我已将其存储在数组中,如

我已创建此类型的对象:

    Size *one = [[Size alloc] initWithX: 3 andY: 1];
    Size *two = [[Size alloc] initWithX: 4 andY: 7];
    // etc...
    Size *thirtythree = [[Size alloc] initWithX: 5 andY: 9];
(每个对象都有一个
@property int x;
@property int y;

我已将其存储在数组中,如下所示:

NSArray *arrayOfSizes;

arrayOfSizes = [NSArray arrayWithObjects:one,two,three,four,five,six,
                seven,eight,nine,ten,eleven,twelve,thirteen,
                fourteen,fifteen,sixteen,seventeen,eighteen,
                nineteen,twenty,twentyone,twentytwo,
                twentythree,twentyfour,twentyfive,twentysix,
                twentyseven,twentyeight,twentynine,thirty,
                thirtyone,thirtytwo,thirtythree nil];
现在我有一个类型为的对象:

Myobject *myObject = [[Myobject alloc] initWithX: 5 andY: 3];
还有一个
@属性intx&
@property int y

我想将它的值与数组中找到的对象的值进行比较,直到找到一个值相似的数组对象。。但是我不知道如何在Obj-C中实现这一点(在C++中,我只会使用<代码>向量v;< />代码> <代码> v siz();< /C> >和<代码> v[x];< /代码>等…..我想…< /p> 以下是我要找的东西:)


提前感谢您的帮助

一个for in循环怎么样

for (Size *item in array) {
   // compare 'item' to myObject
   if (/* equal condition here */) break;
}

试着这样做:

for (int i = 0; i < [arrayOfSizes size]; i++)
{
  Size *current = (Size *)[arrayOfSizes objectAtIndex:i];
  if (myObject.x == current.x && myObject.y == current.y)
  {
    // found
    break;
  }
}
Myobject *myObject = [[Myobject alloc] initWithX: 5 andY: 3];

for (Size *s in arrayOfSizes)
{
    if (s.x == myObject.x && s.y == myObject.y)
    {
        // Found one
        // Do something useful...
        break;
    }
}
for(int i=0;i<[arrayOfSizes size];i++)
{
大小*当前=(大小*)[arrayOfSizes对象索引:i];
if(myObject.x==current.x&&myObject.y==current.y)
{
//发现
打破
}
}
好吧,您可以在阵列上使用。大概是这样的:

for (int i = 0; i < [arrayOfSizes size]; i++)
{
  Size *current = (Size *)[arrayOfSizes objectAtIndex:i];
  if (myObject.x == current.x && myObject.y == current.y)
  {
    // found
    break;
  }
}
Myobject *myObject = [[Myobject alloc] initWithX: 5 andY: 3];

for (Size *s in arrayOfSizes)
{
    if (s.x == myObject.x && s.y == myObject.y)
    {
        // Found one
        // Do something useful...
        break;
    }
}

只是为了使用您给定的结构。不过,还有更聪明的方法:)

另一个:

NSUInteger index = [arrayOfSizes indexOfObjectPassingTest:
    ^BOOL(Size *s, NSUInteger idx, BOOL *stop)
    {
        return (s.x == myObject.x) && (s.y == myObject.y);
    }
];

if (index != NSNotFound) {
    id object = [arrayOfSizes objectAtIndex:index];
}

隐马尔可夫模型。。。我得到一个
不可见的NSArray声明选择器“size”
用count替换size。只要你自己做一点工作,你就会看到这一点。我正在使用Beyers for loop,但他的
[arrayOfSizes size]
给出了一个错误。。我可以简单地用你的
[arrayOfSizes count]-1
替换它,并使用以下内容:
for(int I=0;I<[arrayOfSizes count]-1;I++)
?@SproutCoder,是的,你可以这样做。
应该是比较函数中的
&
。@Martiner感谢你指出这一点。我错过了。现在它被修复了。根据文档,唯一的问题是一旦你从循环中中断,指针就会一直指向最后一个被检查的对象。所以下次我进入那个for循环时,如果我理解正确,它不会从最上面开始检查…@SproutCoder不,那不是真的。每次运行此循环时,将从第一个元素枚举数组。如果在循环之前声明了
s
,那么它将具有中断之前的最后一个值(在我的示例中,
s
的作用域位于循环内部)。但即使这样,下次进入循环时,数组将从一开始就再次枚举。我希望这是有道理的。
NSUInteger index = [arrayOfSizes indexOfObjectPassingTest:
    ^BOOL(Size *s, NSUInteger idx, BOOL *stop)
    {
        return (s.x == myObject.x) && (s.y == myObject.y);
    }
];

if (index != NSNotFound) {
    id object = [arrayOfSizes objectAtIndex:index];
}