Iphone 目标-C+=等效?

Iphone 目标-C+=等效?,iphone,objective-c,Iphone,Objective C,很抱歉这个新手问题,但我找不到答案 我有一个简单的手术。我声明一个变量,然后我想循环一个整数数组,并将它们添加到变量中。然而,我似乎找不到如何在目标C中获得a+=等价物 任何帮助都会很棒 代码: NSInteger * result; for (NSInteger * hour in totalhours) { result += hour; } +=操作肯定有效。您需要做的就是初始化结果变量,使其具有一个起始值。 例如NSInteger*结果=0 祝你好运 您的问题可能是使用了指向

很抱歉这个新手问题,但我找不到答案

我有一个简单的手术。我声明一个变量,然后我想循环一个整数数组,并将它们添加到变量中。然而,我似乎找不到如何在目标C中获得a+=等价物

任何帮助都会很棒

代码:

NSInteger * result;
for (NSInteger * hour in totalhours)
{
    result += hour; 
}

+=操作肯定有效。您需要做的就是初始化结果变量,使其具有一个起始值。 例如NSInteger*结果=0


祝你好运

您的问题可能是使用了指向NSInteger的指针,而不是实际的NSInteger。您也没有初始化它。试试这个:

NSInteger result = 0;
for (NSInteger * hour in totalhours)
{
    result += *hour; 
}

如果totalhours实际包含NSNumber对象,则需要以下内容:

NSInteger result = 0;
for(NSNumber* n in totalhours)
{
    result += [n integerValue];
}
NSInteger不是一个类,它是int的typedef。您不能直接将它放入像NSArray这样的集合中

您需要将扩展为int的基本数据类型int、char、BOOL、NSInteger封装到NSNumber对象中,以将它们放入集合中

NSInteger确实使用+=,请记住,您的代码使用指向它们的指针,这可能不是您在这里想要的

所以

会有用的


如果您将它们与[NSNumber NumberWitnt:a]放在一起;在NSArray中,这并不是那么容易,您需要先使用-intValue方法提取它们的值。

问题在于,您将int或long的typedef与NSNumber之类的类实例相混淆

如果totalhours对象是NSNumber对象的数组,则需要执行以下操作:

NSInteger result;
for (NSNumber *hour in totalhours)
{
    result += [hour integerValue];
}

使用“+=”操作符没有问题,只需确定正在处理的对象。。。 您的代码可能是:

NSNumber *n; NSUInteger t = 0;
for(n in totalHours) {
    t += [n integerValue];
}
// you got your total in t...

NSInteger是一种基本类型,NSInteger*是一种指针类型,因此算术的工作方式不同。您需要说明totalhours是如何初始化和填充的。您想做什么?什么是totalhours?我不确定在Objective-C中取消引用的语法是否不同,但您确定要增加指针而不是值吗?这仍然不太正确,totalhours不太可能但也不是不可能包含原始NSInteger指针。在64位体系结构中,NSInteger是一个到long的typedef。对于包装的NSInteger,应始终使用适当的NSNumber方法:numberWithInteger:和integerValue。
NSNumber *n; NSUInteger t = 0;
for(n in totalHours) {
    t += [n integerValue];
}
// you got your total in t...