在xcode 9.3之前,以下代码片段工作正常:
CKRecord *thePublicGameRecord;
...
//the record value, thePublicGameRecord[KEY_PLAYERSTATES], is set to a NSMutableArray, the size of which is based on the number of players in the game.
...
for (int i = 1; i <= max_number_of_players; i++)
{
NSNumber *playerState - thePublicGameRecord[KEY_PLAYERSTATES][i];
...
}
自升级到xcode 9.3以来,这一行:
NSNumber *playerState - thePublicGameRecord[KEY_PLAYERSTATES][i];
现在给出了构建错误:
读取未在类型对象上找到的数组元素的预期方法 '__kindof id&lt; CKRecordValue&gt; _Nullable'
我必须像这样打开底层数组:
NSMutableArray *statesArray = thePublicGameRecord[KEY_PLAYERSTATES];
playerStatus = statesArray[i];
这不是世界末日,但我更喜欢原始方法。
我已经阅读了许多报告此错误的其他问题,但它们看起来都是不同的场景(自定义协议的定义不正确,变量类型不匹配,和/或xcode 4.5发布之前的问题)。
Expected method to read array element not found on object of type 'id<ProtocolName>'
Compiler error "expected method not found" when using subscript on NSArray
expected method to read dictionary element not found on object of type "NSDateFormatter*"
由于此代码已运行了一年多,我相信错误是由于执行方面的一些变化造成的。 在xcode 9.3中,这是否源于一些新的/更改的配置设置,我可以修复它吗?