在iOS练习中,我新建立了一个NSObject
类JQCellStruct
,声明了double
类型的成员变量p
和a
,在ViewController
中生成了数次类的对象str
,分别赋值了a的值,使用addObject:
方法添加进了可变数组sarray
中。
如果我现在想用stringWithFormat:
方法,令某个label
显示出数组的第i
个str
对象中p
的数值,应该怎么取得p
?
试了点语法和其他网上找的方法,都报错了,希望能够得到解答,谢谢!
添加语句是:
JQCellStruct *str = [[JQCellStruct alloc] init];
str.p = &(dPrice);
str.a = &(dAmount);
[_sarray addObject:str];
实际在程序中报错的语句是在tableView cellForRowAtIndexPath
方法下的:
NSString *p = [NSString stringWithFormat:@"%ld",(long)_sarray[indexPath.row].p];
错误信息为:Property 'p' not found on object of type 'id'
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
是 Objc 还是 swift?
swift:
修改
这个你不需要用
&
这种方式来赋值,不然你拿到的类型就是id类型了,也就是指针,不是double了。NSValue包装struct
你是swift还是oc?oc的话一般不用struct. 用NSObject来包装对象。
如果执意要用struct的话,可以转换一下。
swift的话更简单了
报错的原因是
_sarray[indexPath.row]
返回的类型是id
(NSObject*
)。NSObject
类没有一个叫做p
的属性。在这里,你可以通过添加(JQCellStruct *)
的方式告诉编译器返回的类型是JQCellStruct
。