为什么我的NSManagedObjects数组失去了它的属性?
问题描述:
在我的UIViewController中,我调用另一个类中的方法,它返回一个NSManagedObjects列表,我在数组中实例化一个NSManagedObjects列表。 下面是代码:为什么我的NSManagedObjects数组失去了它的属性?
fileprivate var albumList = [Album]()
private func loadAlbums() {
APIHandler().getUsersAlbums() {
albums in
self.albumList = albums
self.collectionView?.reloadData()
}
}
但是这引起了我阵列具有无属性一次loadAlbums已经完成,APIHandler的情况下清除。我解决了这个现在通过我的UIViewController有APIHandler的实例,并从那里调用该函数,就像这样:
let api = SpotifyAPIHandler()
fileprivate var albumList = [Album]()
private func loadAlbums() {
api.getUsersAlbums() {
albums in
self.albumList = albums
self.collectionView?.reloadData()
}
}
不过我不开心的与此有关。为什么会发生? 如何实例化一个全新的列表?
答
我觉得发生了什么事是你要调用的loadAlbums()
func
,而不是你可以做的是必须在APIHander
class
一个static
refrence的乌尔APIHander
像这样
class APIHander: NSObject {
static let handler = APIHander()
}
每次创建的
APIHandler
一个新实例
那么你会打电话给你的API类似这样的
private func loadAlbums() {
APIHandler.handler.getUsersAlbums() {
albums in
self.albumList = albums
self.collectionView?.reloadData()
}
}
+0
我不认为这是'loadAlbum()'完成后解除分配的问题 - 每次都会保存数据,所以我认为这很好。 – cloudcal
NSManagedObjects是一类,而不是一个指针。请重新说明你的问题。如果您想基于现有对象创建新的托管对象,则应将其复制。有关详细信息,请参阅:https://stackoverflow.com/questions/2730832/how-can-i-duplicate-or-copy-a-core-data-managed-object – ninjaproger
我没有看到任何明显的代码问题。 loadAlbums()完成后,您应该保存所有相册。你的意思是你的数组没有属性?你没有看到你的collectionView中有什么?你设置了你的collectionView.dataSource和collecitonView.delegate吗? – cloudcal
我的数组在每个位置都有一个有效的NSManagedObject,但是如果我尝试获取albumList [0] .name,例如,名称将是零 –