我试图从完成块中逐步执行[AnyObject]数组并将项目转换为字符串,以便我可以将它们放在tableView中。但是,当我尝试追加数组的各个值时,我收到此错误:public class AddEventsAdapter extends RecyclerView.Adapter<AddEventsAdapter.ViewHolder> {
public List<String> items = new ArrayList<>();
public void addItem(String name) {
notifyItemInserted(items.size() - 1);
items.add(name);
}
public void removeItem(int position) {
items.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, items.size());
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.add_event_item, parent, false);
return new ViewHolder(view);
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.setData(position);
holder.eventName.setText(i + "");
if(position == 0)
{
holder.theLayout.setBackgroundColor(Color.parseColor("#7F9099"));
holder.eventName.setText("Add");
}
}
static int i;
class ViewHolder extends RecyclerView.ViewHolder{
public TextView eventName;
public RelativeLayout theLayout;
public ViewHolder(final View itemView) {
super(itemView);
eventName = (TextView)itemView.findViewById(R.id.eventName);
theLayout = (RelativeLayout)itemView.findViewById(R.id.backgroundevent);
theLayout.setId(++i);
}
public void setData(final int position) {
theLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (position == items.size() - 1) {
addItem("");
} else {
removeItem(position);
}
}
});
}
}
}
。这是代码:
Cast from '()' to unrelated type 'String' always fails
如果有帮助,我使用PubNub在我的Swift应用程序中创建/存储消息。
谢谢!
答案 0 :(得分:3)
当你写
时self.messagesArray.append(value) as? String
你可能意味着
self.messagesArray.append(value as? String)
虽然
self.messagesArray.append(value)
应该足够了,因为historyMessages
已经是[String]!
类型。
错误在于您将self.messagesArray.append(value)
(Void
因append
未返回任何内容而导致的任何内容)的结果转换为String
,但这始终会失败。
顺便说一下,你的代码使用的感叹号比它应该的多。你应该使用guard-let来确保你的变量是非零的。