【发布时间】:2015-10-08 18:09:42
【问题描述】:
我有 ShopItem 和 Product 表。 Product 与 ShopItem 有关系。我想从ShopItem 对象中获取所有产品。我在ShopItem 类中创建了一个方法
class ShopItem: NSManagedObject {
func fetchProducts(q: String) {
// some code ...
let fetchRequest = NSFetchRequest(entityName: "Product")
fetchRequest.predicate = NSPredicate(
format: "shopitem == %@ AND keyword == %@",
self.objectID, String(jsonObj["keyword"])
)
fetchRequest.fetchLimit = 1;
do {
fetchResults = try self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [Product]
} catch {
fatalError("Fetching from the store failed")
}
}
}
在日志中它会为我生成以下 sql:
SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZPRODUCT_TITLE, t0.ZPRODUCT_URL,
t0.ZSHOPITEM FROM ZPRODUCT t0 WHERE ( t0.ZSHOPITEM = ? AND
t0.ZKEYWORD = ?) LIMIT 1
结果总是空的。
【问题讨论】:
-
jsonObj看起来像一个全局变量。让一个类依赖外部全局并不是很好的设计。 -
不是您的问题的答案,而是一个建议:看看MagicalRecord。它极大地减少了您在使用 Core Data 时必须编写的代码量,并且大约需要 10 分钟才能习惯:)