iphone - OS 3.0 中的快速枚举

标签 iphone objective-c iphone-sdk-3.0

我刚刚尝试针对 OS 3.0 编译我的 iPhone 应用程序,但在使用快速枚举时出现编译错误。

我正在尝试遍历包含 cComment 类的 NSArray:

for (cComment* newComment in comments.comments)

我收到此错误

错误:访问器的类型与属性“注释”的类型不匹配。

当使用 OS 2.2.1 编译时,它可以完美地工作。

我理解这个错误,枚举不是强类型的,但据我所知,objective-c 不支持泛型/模板。所以目前我只能看到一种解决方法:

for (id commentObject in comments.comments)
{
     cComment *newComment = (cComment *)commentObject;
}

谁能想到另一种方法吗?为什么会发生这样的变化?如果您能提供有关此更改的苹果文档,我们将不胜感激。

编辑

按照 Grouchal 的建议,我尝试了这个: NSArray* allComments = comments.comments 我得到了同样的错误,所以看来它毕竟与枚举无关

这是头文件中的代码:

NSMutableArray *评论;

@property(只读,非原子)NSArray* 注释;

并且该属性在实现文件中综合。

将属性更改为 NSMutableArray 似乎可以解决问题,但我看不出有任何理由说明为什么会出现这种情况。任何想法。

谢谢。

最佳答案

问题出在属性定义中。您应该将其更改为:

@property(只读,非原子)NSMutableArray* 注释

不利的一面是,您的数组将暴露为可变的(尽管我认为这是您想要防止的)。

关于iphone - OS 3.0 中的快速枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1019003/

相关文章:

php - 我应该如何定期从Web服务器获取信息?

iphone - 对象 : Make a NSURL with a String that does not conform to RFC 2396

iphone - 通过分段控件选择的 Google MK-map View 和 Mk-map 类型

ios - 如何在 iOS 中获取 UIView 的 super View 的 UIViewController?

iphone - 在本地 HTML 文件中加载图像 -- UIWebView

iphone - HTTPS 上的 HTML5 音频无法在智能手机上运行?

ios - 当字符串为空时,componentsSeparatedByString 返回 1 个对象

iPhone - 应用程序被弹出

iphone - 什么时候为自定义 subview 子类化 UIViewController?

iphone - 在 NSArray 中访问 NSDictionary