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];

解析度:

是的,正如赫尔曼所说,错误是外部的。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

在您的应用程序中某处是获取的 NSString 对象的超级视图。我猜您将 NSString 对象分配给了需要 UIView 的东西。可能是这样的:

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

代替

someButton.textLabel.text = someString; // correct

这与您的阵列问题没有直接关系。

于 2012-11-20T13:24:01.807 回答
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 回答