我有一个核心数据项目,我从多个来源检索数据。并不是所有的数据都会被保存,所以我创建了一个结构来在保存之前传递数据。单身人士不按要求工作
struct SearchResult {
var myURL: String?
var myHeadline: String?
init() {}
init(myURL: String, myHeadline: String) {
self.myURL = myURL
self.myHeadline = myHeadline
}
}
因为我想在一个UITableView
显示部分,我创建了一个struct
,以及:
struct ResultsObjects {
var sectionName: String?
var sectionObjects = [SearchResult]()
init() {}
init(sectionName: String) {
self.sectionName = sectionName
}
}
最后,我创建了一个singleton
继续持有SearchResult
对象来保存它们在之前managedObjectContext
。
class SearchResultsArray {
static let sharedInstance = SearchResultsArray()
var resultsObjectsArray = Array<ResultsObjects>()
fileprivate init() {}
}
我的目标是让SearchResultsArray
类通过多类访问,并能够倾倒ResultsObjects
到它在一个类中,看到在另一个ResultsObjects
。
在MyViewController
,我实例化SearchResultsArray
如下:
var resultsObjectsArray = SearchResultsArray.sharedInstance.resultsObjectsArray
我有一个UITableViewController
,我使用resultsObjectsArray
填充。
在MyViewController
上,一个按钮调用一个方法,该方法使用MyParserClass
中的方法来解析网页。这也适用。
MyParserClass
声明中相同的方式一个resultsObjectsArray
作为MyViewController
:
var resultsObjectsArray = SearchResultsArray.sharedInstance.resultsObjectsArray
在MyParserClass
,一种方法被称为创建SearchResult
对象,他们转储到ResultsObjects
和它们附加到SearchResultsArray.resultsObjectsArray
。这工作正常。我在下面一行扔在倾入resultsObjectsArray
创建ResultsObjects
方法:
print("\(resultsObjectsArray.count) ResultsObjects in SearchResultsArray")
delegate.updateSearchResults()
我MyViewController
的updateSearchResults
委托方法扔了打印语句,它返回0,不管是什么MyParserClass
说是在那里就在调用委托方法之前。
该应用程序不会崩溃,但它似乎像我有单身的问题。任何建议重新:我做错了什么是不胜感激。
你见过这个帖子http://stackoverflow.com/questions/26742138/singleton-in-swift 它表明我们应该声明类'final'来确保我们不会获得倍数 - 可能值得检查 – Russell
数组是快速值类型。您不能使用实例变量来引用该数组。您必须始终使用'SearchResultsArray.sharedinstance.resultsObjectsArray' – Paulw11
@ Paulw11哇!我知道我错过了简单的事情,但哇!非常感谢你的回复。我非常感谢。 – Adrian