1

多くの Path オブジェクトを含む NSMutableArray Paths があります。

特定のパスが Paths にあるかどうかはわかります。

私は試しました:

if([paths containsObject:aPath]) {
    return YES;
}

しかし、うまくいきません。

だから、私も Predicates を試しました:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains %@", path];
NSArray *filteredArray = [self.paths filteredArrayUsingPredicate:predicate];

しかし、エラーが発生しました。コンソールに、Paths はコレクションではないと表示されます。

編集 :

私のパスの配列は次のとおりです。

2013-04-04 20:57:36.465 numbs[42781:617] paths (
    "PATH: (\n    2,\n    2,\n    2,\n    5,\n    5,\n    6,\n    5,\n    4\n)",
    "PATH: (\n    2,\n    2,\n    2,\n    5,\n    5,\n    6,\n    4,\n    5\n)",
    "PATH: (\n    2,\n    2,\n    2,\n    5,\n    5,\n    4,\n    5,\n    6\n)",
    "PATH: (\n    2,\n    2,\n    2,\n    5,\n    5,\n    4,\n    6,\n    5\n)"
)

パスは次のとおりです。

PATH: (
    2,
    2,
    2,
    5,
    5,
    5,
    6,
    5,
    4
)

編集2:

Path.mに追加します

- (BOOL)isEqual:(id)other
{
    return ([other isKindOfClass:[Path class]] &&
            [[other arrayOfNode] isEqual:self.arrayOfNode] &&
            [other somme] == self.somme &&
            [[other result] isEqual:self.result] &&
            [[other resultString] isEqual:self.resultString] &&
            [[other wayArray] isEqual:self.wayArray]);
}

- (NSUInteger) hash;
{
    return somme ^ [resultString hash] ^ [wayArray hash] ^ [arrayOfNode hash] ^ [result hash];
}

そして私のコントローラーで:

 if([paths containsObject:aPath]) {
        return YES;
    }

しかし、この方法もうまくいきません。

4

2 に答える 2

0

EDITED (04013の投稿の新しい情報について)

私があなただったら、次のようなことを試します:

Path *_path = ...; // you object you'd like to find
NSArray *_pathsArray = ...; // the array with lots of Path objects;

if ([[_pathsArray filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
    return ([evaluatedObject isEqual:_path]); // ... or whatever how you'd like to compare them
}]] count] > 0) {
    // it contains your _path object
} else {
    // it doesn't contain you _path object
}

また

Path *_path = ...; // you object you'd like to find
NSArray *_pathsArray = ...; // the array with lots of Path objects;

__block BOOL _isInsideTheArray = FALSE;
[_pathsArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    *stop = _isInsideTheArray = ([obj isEqual:_path]); // ... or whatever how you'd like to compare them
}];

if (_isInsideTheArray) {
    // it contains your _path object
} else {
    // it doesn't contain you _path object
}
于 2013-04-04T16:14:35.737 に答える