Cocoa プロジェクトにオブジェクトの配列があります。オブジェクトが渡された値と一致する属性を持っている場合、オブジェクトはメソッドの戻り値である新しい配列に保存する必要があります。これは非常に単純なようですが、奇妙な動作が見られます。メソッドは次のとおりです。
- (NSMutableArray*)tagAttributeRectsForID:(NSString*)nodeID
{
NSMutableArray * resultArray = [NSMutableArray array];
for (NSDictionary * line in self.lineInfoForTap) {
NSMutableArray * glyphRects = [line valueForKey:@"GlyphRects"];
for (NSDictionary * rectDict in glyphRects) {
if ([rectDict valueForKey:nodeID]) {
CGRect thisRect = CGRectFromString([rectDict valueForKey:nodeID]);
if (thisRect.size.width > 0) {
[resultArray addObject:NSStringFromCGRect(thisRect)];
}
}
}
glyphRects = nil;
}
return resultArray;
}
何が起こるかは、一連の一致をもたらす行オブジェクトの数に応じて、返される配列で結果の完全なセットを取得する回数です。言い換えれば、標本の結果は次のようになると思います。
2013-04-16 19:38:37.665 Vorpal[18523:c07] (
"{{0, 486.5}, {38.44, 13.5}}",
"{{100, 486.5}, {27.12, 13.5}}",
"{{140, 483.34}, {86.54, 16.66}}",
"{{0, 508.86}, {58.62, 14.14}}"
)
しかし、代わりに私はこれを取得します:
2013-04-16 19:38:37.665 Vorpal[18523:c07] (
"{{0, 486.5}, {38.44, 13.5}}",
"{{100, 486.5}, {27.12, 13.5}}",
"{{140, 483.34}, {86.54, 16.66}}",
"{{0, 508.86}, {58.62, 14.14}}",
"{{0, 486.5}, {38.44, 13.5}}",
"{{100, 486.5}, {27.12, 13.5}}",
"{{140, 483.34}, {86.54, 16.66}}",
"{{0, 508.86}, {58.62, 14.14}}"
)
3 行分の一致結果があった場合、3 セットのデータが返されます。
このメソッドをコーディングした方法について、非常に基本的な何かが欠けていると思わずにはいられませんが、何時間も見つめた後、タオルを投げて友人に尋ねる準備ができています. あなたはその友人、匿名の SO 読者ですか? 私は友達を使うことができました。:-(