Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从核心数据中删除对象,还会追加空对象吗?

从核心数据中删除对象,还会追加空对象吗?
EN

Stack Overflow用户
提问于 2015-04-14 08:12:05
回答 1查看 842关注 0票数 2

我正在尝试设置一个UITableView,其中包含一个实体中的所有对象。

但是,我正在从api中加载数据。所以每次加载时,我都会删除实体中的所有对象。加上新的。

但是当我这么做的时候。它显示了5个带有api数据的单元格,每次加载它。它增加了5个空细胞。

它添加空单元格的原因是,我定义的对象数如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return stocks.count
}

有股票的地方:var stocks = [NSManagedObject]()

因此,我认为这是因为我的实体中有一些空的对象?

下面是我如何设置我的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    func loadSuggestions(Formula: Int) {
    println("----- Loading Data -----")
    // Check for an internet connection
    if Reachability.isConnectedToNetwork() == false {
        println("ERROR: -> No Internet Connection <-")
    } else {

        // Delete all the current objects in the entity
        let fetchRequest = NSFetchRequest(entityName: formulaEntity)
        let a = managedContext.executeFetchRequest(fetchRequest, error: nil) as! [NSManagedObject]
        for mo in a {
            managedContext.deleteObject(mo)
            //println("removed \(mo)")
        }
        // save the context after removing objects.
        managedContext.save(nil)

        // Setting up a fetch request to get the api data.
        let entity =  NSEntityDescription.entityForName("\(formulaEntity)", inManagedObjectContext:managedContext)

        var request = NSURLRequest(URL: formulaAPI!)
        var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
        var formula = JSON(data: data!)

        for (index: String, actionable: JSON) in formula["actionable"] {
            stockName = actionable["name"].stringValue
            ticker = actionable["ticker"].stringValue
            action = actionable["action"].stringValue
            suggestedPrice = actionable["suggested_price"].floatValue
            weight = actionable["percentage_weight"].floatValue

            // Set the values in CoreData
            let stock = NSManagedObject(entity: entity!,insertIntoManagedObjectContext:managedContext)

            stock.setValue(stockName, forKey: "name")
            stock.setValue(ticker, forKey: "ticker")
            stock.setValue(action, forKey: "action")
            stock.setValue(suggestedPrice, forKey: "suggestedPrice")
            stock.setValue(weight, forKey: "weight")

            // Set up second api fetch
            var quoteAPI = NSURL(string: "http://dev.markitondemand.com/Api/v2/Quote/json?symbol=\(ticker)")

            var quoteRequest = NSURLRequest(URL: quoteAPI!)
            var quoteData = NSURLConnection.sendSynchronousRequest(quoteRequest, returningResponse: nil, error: nil)
            if quoteData != nil {
                var quote = JSON(data: quoteData!)
                betterStockName = quote["Name"].stringValue
                lastPrice = quote["LastPrice"].floatValue

                // Setting the last values in CoreData
                if betterStockName != "" {
                    stock.setValue(betterStockName, forKey: "name")
                }
                stock.setValue(lastPrice, forKey: "lastPrice")

            } else {
                println("ERROR - NO DATA")
            }

            var error: NSError?
            if !managedContext.save(&error) {
                println("Could not save \(error), \(error?.userInfo)")
            }
            // finally add the stockdata to the CoreData entity.
            stocks.append(stock)


        }



        // Reload the tableview with the new data.
        self.tableView.reloadData()
    }
}

关于如何删除实体中的所有对象,没有多少信息。但我试着打印它正在删除的对象,这一切似乎都是正确的。

但我肯定在上面的某个地方做错了什么。因为每次调用上述函数时,它都会增加5个单元格。

任何帮助找出从哪里来的5个空细胞,以及如何修复它将是非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-14 09:29:37

原因很简单,因为您只向stocks添加新条目,而从不删除任何内容。如果你从不从数组中删除任何东西,它就永远不会变小。

您确实从Core数据中删除了对象,但这并不会自动从数组中删除它们。它们不会仅仅因为Core数据不再拥有它们而从内存和数组中消失。在从Core中删除对象之后,您需要单独调用数组上的removeAll

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29632319

复制
相关文章
空对象和空的对象
空对象:表面内部不包含任何属性和方法的对象,比如var obj={}就是一个空对象
十月梦想
2018/08/29
1.3K0
如何从JavaScript对象中删除属性?
在使用 JavaScript 中的对象时,你可能会遇到需要从对象中完全删除属性的情况。为实现这一点可以有好几个选择:
疯狂的技术宅
2021/04/01
12.4K0
JDBC中的核心对象
其实我们今后只需要会用DriverManager的getConnection()方法即可:
星哥玩云
2022/09/14
5550
java 对象为空判断_java中判断对象是否为空的方法
首先,直接使用 object == null 去判断,对象为null的时候返回true,不为null的时候返回false。然后,在object != null 为true的情况下,进一步去判断对象的所有属性是否为null。
全栈程序员站长
2022/08/15
11.5K0
java 对象为空判断_java中判断对象是否为空的方法
java怎么判断对象为空_java中怎么判断对象是否为空
一种是org.apache.commons.lang3包下的;另一种是org.springframework.util包下的。
全栈程序员站长
2022/06/28
6.8K0
java怎么判断对象为空_java中怎么判断对象是否为空
js判断空对象
如果它返回一个空数组,这意味着该对象没有任何可枚举的属性,这反过来意味着它是空的。
IT工作者
2022/01/04
18.5K0
空对象(Null)模式
一个方法返回 NULL,意味着方法的调用端需要去检查返回值是否是 NULL,这么做会导致非常多的冗余的检查代码。并且如果某一个调用端忘记了做这个检查返回值,而直接使用返回的对象,那么就有可能抛出空指针异常。
MickyInvQ
2022/05/06
6080
空对象(Null)模式
vue 对象判断为空_Vue中可用的判断对象是否为空的方法
vue有两个方法可用 1. JSON.stringify(evtValue)=='{}’ 2. Object.keys(xxx).length==0 js判断对象是否为空对象的几种方法 1.将json对象转化为json字符串,再判断该字符串是否为”{}” var data = {}; var b = (JSON.stringify(data) == “{}”); alert(b);//true 2.for in 循环判断 var obj = {}; var b =…
全栈程序员站长
2022/08/12
6.2K0
vue删除对象的某个属性(js怎么删除对象中的某个元素)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128065.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/26
10.3K0
js中判断对象是否为空
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130704.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/01
11.5K0
tp5如何创建空对象(用于接口返回json空对象)
{ “code”: 1, “msg”: “成功”, “time”: “1660123209”, “data”: {}, }
超级小可爱
2023/02/20
4.2K0
java如何判断对象为空_java对象如何判断是否为空
在实际书写代码的时候,经常会因为对象为空,而抛出空指针异常java.lang.NullPointerException。
全栈程序员站长
2022/06/25
13.4K0
java如何判断对象为空_java对象如何判断是否为空
js删除数组对象中符合条件的数据
var data = [{}, {}, {}, {Id:1}] var datawilldele = [];//2,4,5 data.forEach(function (v, i,arry) { if ($.isEmptyObject(v)) { datawilldele.push(i); } }); for (var i = 0; i < datawilldele
FreeTimeWorker
2020/08/31
5.9K0
设计模式-空对象模式
一般情况在编写代码的时候判断为空需要通过null==来判断,而这样的写法很难看,一眼看下去几百行代码,密密麻麻都是这些判断,代码很不优雅,有时还漏判还会导致空指导异常。这个问题,java的空对象模式很不错的解决方案,可以做到优雅判断。
逍遥壮士
2020/09/18
9060
java判断空对象为空_Java判断对象是否为空(包括null ,””)的方法[通俗易懂]
public static boolean isEmpty(Object obj)
全栈程序员站长
2022/06/25
7K0
JavaScript 判断空对象、空数组的方法
从表格中,我们可以看出想要判断是不是null, undefined , "", 0,都比较容易, 非操作 和 比较操作 都能实现。就是{}, []比较顽固,两种方法都无效。
celineWong7
2020/11/05
30K0
Javascript中如何检测一个空对象
如何检测空对象,如var a = {}; 对象a即是一个空对象,因为它不含有任何属性。
IT工作者
2022/01/25
1K0
Qt核心:元对象系统(1)- 元对象和元数据
P.S.(该系列文章是个人学习总结,拿出来和大家讨论,水平有限,如有错误,特别、非常、极其欢迎批评和指正!)
登山客
2022/10/17
2.5K0
java怎么判断对象不为空_java判断对象是否为空的方法
这篇文章将为大家详细讲解有关java判断对象是否为空的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
全栈程序员站长
2022/09/07
4.8K0
空对象模式(Null Object Pattern)
空对象模式(Null Object Pattern)不属于GoF设计模式,但是它作为一种经常出现的模式足以被视为设计模式了。其具体定义为设计一个空对象取代NULL对象实例的检查。NULL对象不是检查控制,而是反映一个不做任何动作的关系。这样的NULL对象也可以在数据不可用的时候提供默认的行为,属于行为型设计模式。
Tom弹架构
2021/11/25
8240

相似问题

从对象中删除空对象

30

从JSON对象中删除空数据

245

从核心数据中删除特定对象

12

从NSMutableArray中删除核心数据对象

20

从核心数据中删除重复对象

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文