3

おい。ファイルから文字列を読み込んで、結果の文字列を使用して、KVC メソッドを使用してオブジェクトに BOOL プロパティを設定しようとしています-setValue:forKeyPath:。ただし、これは例外で壊れます: -[NSCFString charValue]: unrecognized selector sent to instance 0x7fff711023b0. これは、BOOLがcharからtypedefされているためだと思います。これを回避する方法はありますか?ありがとう!

4

3 に答える 3

3

KVC を使用してプロパティを設定する場合BOOL、オブジェクトを渡す必要がありNSNumberます。あなたの場合にできることは pass[NSNumber numberWithBool:[myString boolValue]]です。これでクラッシュが修正されるはずです。

于 2010-09-07T22:37:43.173 に答える
3

例外をキャッチし、その名前を確認してから、必要に応じてラップされた値で再試行しています。コードは次のとおりです。

    @try
    {
        [(NSObject*)retObj setValue:[[obj keyValuePairs] objectForKey:key]
                         forKeyPath:key];
    }
    @catch (NSException * e)
    {
        if ([[e name] isEqualToString:NSInvalidArgumentException])
        {
            NSNumber* boolVal = [NSNumber numberWithBool:[[[obj keyValuePairs] objectForKey:key] boolValue]];
            [(NSObject*)retObj setValue:boolVal
                             forKeyPath:key];
        }
    }

とにかくありがとう!

于 2010-09-08T01:12:44.767 に答える