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
Objective c NSMutableArray打印具有多个属性的对象数组_Objective C_Arrays - Fatal编程技术网

Objective c NSMutableArray打印具有多个属性的对象数组

Objective c NSMutableArray打印具有多个属性的对象数组,objective-c,arrays,Objective C,Arrays,我已经为继承Character类的Friend和Foe对象定义了这个printDetails方法 -(void) printDetails { NSLog (@"\n%@: \nStrength is %ld \nIntelligence is %ld \nSpell is %@\n\n", self.name, self.strength, self.intelligence, self.spell); } 我主要打印数组字符 NSLog(@"%@", characters); 但是我

我已经为继承Character类的Friend和Foe对象定义了这个printDetails方法

-(void) printDetails
{
NSLog (@"\n%@: \nStrength is %ld \nIntelligence is %ld \nSpell is %@\n\n", self.name, self.strength, self.intelligence, self.spell);
}
我主要打印数组字符

  NSLog(@"%@", characters);
但是我的输出看起来像一系列内存地址

(
"<Friend: 0x100204aa0>",
"<Friend: 0x100600320>",
"<Friend: 0x100600170>",
"<Foe: 0x100500330>",
"<Foe: 0x100205b50>",
"<Foe: 0x100102270>"
)

似乎您从未在主应用程序中调用printDetails函数。您看到的结果是指向NSArray中字符的指针的内存地址

这不是最优雅的解决方案,但要测试函数,您可以简单地在元素上循环并在每个元素上调用printDetails,只要您的函数是Character类的本地函数

-(void) printDetails
{
NSLog (@"\n%@: \nStrength is %ld \nIntelligence is %ld \nSpell is %@\n\n", self.name, self.strength, self.intelligence, self.spell);
}

这将在控制台中输出函数的结果。

我使用以下代码获得了它

int num = 1;
for (Character *theCharacter in characters)
{
    NSLog (@"%d : ", num++);
    [theCharacter printDetails];
}

朋友、敌人和角色都有printDetails方法。但是Friend和Foe中的版本应该覆盖Character中的版本,因为它们打印的属性略有不同。我无法使你的建议生效。不过,我确实让它使用了以下代码。int num=1;对于Character*字符{NSLog@%d:,num++;[theCharacter printDetails];}@Lee,除了打印出任意计数器外,您刚才发布的代码完全相同。给元素分配一个类型,我在swift中呆的时间太长了;我将更新我的答案,但整数显示与实际解决方案无关。另外,不要尝试使用该num变量作为数组的下标访问器,Objective-C是0索引的,最终会在最后一个元素上出现运行时异常。Override-NSString*类Friend和Foe的描述,和/或字符。