第一次获取重复的tableview单元格

时间:2017-05-31 10:24:29

标签: ios swift uitableview firebase firebase-realtime-database

在我的应用中,有一个添加按钮,点击后会添加一个新的tableviewcell。然而问题是我第一次得到重复的细胞。基本上,当我第二次点击时,我得到2个重复,第三次点击3,依此类推....请查看截图的图像: Screen 1

上图是第一个屏幕。单击“+”将添加一个新单元格,如下图所示: Screen 2: Create cell

保存后, Screen 3:after save

现在,如果我退出此视图并返回,再次单击添加并创建一个新单元格,它会给我重复,如上段所述(即第二次为2,第三次为3,依此类推...)。 以下是屏幕截图:enter image description here

以下是我正在使用的代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableInputFormat;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaSparkContext;

import java.io.IOException;

public class HbaseScan {

    public static void main(String ... args) throws IOException, InterruptedException {

        // Spark conf
        SparkConf sparkConf = new SparkConf().setMaster("local[4]").setAppName("My App");
        JavaSparkContext jsc = new JavaSparkContext(sparkConf);

        // Hbase conf
        Configuration conf = HBaseConfiguration.create();
        conf.set(TableInputFormat.INPUT_TABLE, "big_table_name");

        // Create scan
        Scan scan = new Scan();
        scan.setCaching(500);
        scan.setCacheBlocks(false);
        scan.setStartRow(Bytes.toBytes("a"));
        scan.setStopRow(Bytes.toBytes("d"));


        // Submit scan into hbase conf
        conf.set(TableInputFormat.SCAN, TableMapReduceUtil.convertScanToString(scan));

        // Get RDD
        JavaPairRDD<ImmutableBytesWritable, Result> source = jsc
                .newAPIHadoopRDD(conf, TableInputFormat.class,
                        ImmutableBytesWritable.class, Result.class);

        // Process RDD
        System.out.println(source.count());
    }
}

有人可以帮我理解我的代码有什么问题吗?谢谢!

编辑:我已经毫不费力地推荐了这个帖子:Getting duplicate cells with UITableViewController cellForRowAtIndexPath

编辑2:此外,当我走出该视图并转到相同的视图时,重复的值被转化。

编辑3:尝试答案但没有成功。

1 个答案:

答案 0 :(得分:0)

按照以下步骤操作:

  1. 当您从firebase db获取数据时,首先删除您在cellForRow方法中使用的所有对象。在你的情况下,我认为它应该是Bucket数组(不确定)。

  2. 将数据分配给对象

  3. 重新加载tableview。

  4. 数据复制的原因。

    让你的存储桶有2个值,它存储在数据库中。从DB获取数据时,它会为您提供所有值,即1,2,3。现在你添加这些,你的数组将是1,2,1,2,3。

    这就是你案件中发生的事情。