来自'()'到不相关的类型' String'总是失败

时间:2016-04-17 01:41:49

标签: ios arrays swift swift2 pubnub

我试图从完成块中逐步执行[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应用程序中创建/存储消息。

谢谢!

1 个答案:

答案 0 :(得分:3)

当你写

self.messagesArray.append(value) as? String
你可能意味着

self.messagesArray.append(value as? String)

虽然

self.messagesArray.append(value)

应该足够了,因为historyMessages已经是[String]!类型。

错误在于您将self.messagesArray.append(value)Voidappend未返回任何内容而导致的任何内容)的结果转换为String,但这始终会失败。

顺便说一下,你的代码使用的感叹号比它应该的多。你应该使用guard-let来确保你的变量是非零的。