0

NSMutableArray* を NSArray* にコピーしようとしていますが、機能せず、[__NSCFString superview]: unrecognized selector sent to instance error が生成されます。コードは次のとおりです。

//where gc is a NSDictionary*, recentKey is a NSString*, and _objects is a NSArray*
//gc is an singleton is used to save chache data, with NSKeyedUnarchiver class
//_objects is used to reload the UITableView's data

NSArray *savedNews = [[NSArray alloc] initWithArray:[gc objectForKey:recentkey]];

//this not works...why??
_objects = [[NSArray alloc] initWithArray:savedNews];

解像度:

はい、Herman が示唆するように、エラーは外部からのものでした。savedNews 配列は、NSEncoding を含むクラスを使用していましたが、エラーが発生しました:

- (void)encodeWithCoder:(NSCoder *)encoder {
//...where element was NSString* and not "UIImageView"
// element should be imgView
    if (imgView) [encoder encodeObject:element forKey:@"imgView"];
}

みんなありがとう。

4

2 に答える 2

0

まず、そのキーの辞書内のオブジェクトが何であるかを確認します。

NSLog(@"GC Object type for recentkey:%@", [[gc objectForKey:recentkey] class]);

NSArray のみを initWithArray に渡すことができます。つまり、そのオブジェクトがまだ NSArray ではないが、そのオブジェクトを配列に入れたい場合。これを行う..

id obj = [gc objectForKey:recentkey]; //Because I have no idea what this is
NSArray *savedNews = [NSArray arrayWithObject:obj];
于 2012-11-20T13:56:21.667 に答える
0

アプリのどこかに、フェッチされた NSString オブジェクトのスーパービューがあります。UIView が期待される場所に NSString オブジェクトを割り当てたと思います。次のようなものかもしれません:

someButton.textLabel = someString; // wrong - but should generate a compiler warning

それ以外の

someButton.textLabel.text = someString; // correct

これは、アレイの問題とは直接関係ありません。

于 2012-11-20T13:24:01.807 に答える