gpt4 book ai didi

ios - Swift 核心数据删除一对多关系中的条目

转载 作者:行者123 更新时间:2023-11-28 07:03:29 25 4
gpt4 key购买 nike

我在 iOS 8.4 项目中使用 Xcode 6.4 和 Swift我有一个具有一对多关系的模型

class Account: NSManagedObject {

@NSManaged var userId: Int
@NSManaged var accessToken: String?
@NSManaged var userName: String
@NSManaged var sex: String
@NSManaged var email: String
@NSManaged var avatarUrl: String?

@NSManaged var friends: NSSet
}

class User: NSManagedObject {

@NSManaged var id: Int
@NSManaged var userName: String
@NSManaged var sex: String
@NSManaged var email: String
@NSManaged var avatarUrl: String

}

当我试图删除所有好友时,它不起作用:

extension Account {

func replaceFriends(friends:[User]) {
var friendsList = self.mutableSetValueForKey("friends")
friendsList.removeAllObjects()
friendsList.addObjectsFromArray(friends)
}

func getFriends() -> [User] {
return self.mutableSetValueForKey("friends").allObjects as! [User]
}

}

class AccountDao: BaseDao {

private class func findAccount() -> Account? {
if let result = moc.executeFetchRequest(NSFetchRequest(entityName: "Account"), error: nil) as? [Account] {
if (!result.isEmpty) {
return result[0]
}
}
return nil
}

class func getAccount() -> Account {
return findAccount() ??
NSEntityDescription.insertNewObjectForEntityForName("Account", inManagedObjectContext: moc) as! Account;
}
}

在保存期间我设置了空数组:

class func saveObjectContext() -> Bool {
var error: NSError?

var account = AccountDao.getAccount()
account.replaceFriends([User]())
if !moc.save(&error) {
self.log.error("Error during saving context, \(error)")
return false
} else {
println("Count in log \(AccountDao.getAccount().getFriends().count)")
self.log.info("Info save context \(error)")
return true
}
}

在日志中它返回 0:在日志 0 中计数

但在 ControllerView 中,我仍然得到 AccountDao.getAccount().getFriends().count == 1。方法 replaceFriends 仅在我第一次获取和保存数据时有效。它会保存简单属性的更改,例如 userName 但不会保存 friends。你有什么想法吗?

最佳答案

我发现在 Account -> User 中没有反向关系的一对多关系,在 Account 中更改列表后 列表中的每个用户都必须标记为已更改(属性 updated == true)。但它始终设置为 false

我向用户添加了额外的属性,每次更改列表后我都必须更改此属性,如 user.toUpdate = true。进行此更改后,一切正常。

关于ios - Swift 核心数据删除一对多关系中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31430849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com