使用核心数据增加实体的计数 (Twitter CS193p)
Using Core Data to Increment a count on an entity (Twitter CS193p)
我正在完成 CS193 斯坦福课程,并且正在使用 Core Data 将推文存储为 Twitter 客户端的一部分。
然而,当我找到一个存在的哈希值时,我想增加 hash.count 代表我有多少匹配项,但无论有多少匹配的哈希值 hash.count 只会存储0 或 2(即属性不作为实体上的持久存储)。
class HashMention: NSManagedObject {
static func findOrCreateHashMention(matching twitterInfo: Twitter.Mention, in context: NSManagedObjectContext) throws -> HashMention
{
let hash = HashMention (context: context)
let request : NSFetchRequest<HashMention> = HashMention.fetchRequest()
request.predicate = NSPredicate(format: "text =[cd] %@", twitterInfo.keyword)
do {
let matches = try context.fetch(request)
if matches.count > 0 {
//inc count
hash.count = Int32(Int(matches.count) + 1)
return hash
}
else{
hash.count = 0
print("zero hash:", twitterInfo.keyword)
hash.text = twitterInfo.keyword.lowercased()
return hash
}
}
catch{
//makes this function throw
throw error
}
}
}
所以匹配项本身需要更改 - 但在上面的示例中位于数组中。因此答案如下:
do {
let matches = try context.fetch(request)
let mention = matches.first
if matches.count > 0 {
mention?.count = (mention?.count)! + 1
//.. more code
我正在完成 CS193 斯坦福课程,并且正在使用 Core Data 将推文存储为 Twitter 客户端的一部分。
然而,当我找到一个存在的哈希值时,我想增加 hash.count 代表我有多少匹配项,但无论有多少匹配的哈希值 hash.count 只会存储0 或 2(即属性不作为实体上的持久存储)。
class HashMention: NSManagedObject {
static func findOrCreateHashMention(matching twitterInfo: Twitter.Mention, in context: NSManagedObjectContext) throws -> HashMention
{
let hash = HashMention (context: context)
let request : NSFetchRequest<HashMention> = HashMention.fetchRequest()
request.predicate = NSPredicate(format: "text =[cd] %@", twitterInfo.keyword)
do {
let matches = try context.fetch(request)
if matches.count > 0 {
//inc count
hash.count = Int32(Int(matches.count) + 1)
return hash
}
else{
hash.count = 0
print("zero hash:", twitterInfo.keyword)
hash.text = twitterInfo.keyword.lowercased()
return hash
}
}
catch{
//makes this function throw
throw error
}
}
}
所以匹配项本身需要更改 - 但在上面的示例中位于数组中。因此答案如下:
do {
let matches = try context.fetch(request)
let mention = matches.first
if matches.count > 0 {
mention?.count = (mention?.count)! + 1
//.. more code