我有ShopItem
和Product
个表格。 Product
与ShopItem
有关。我想从ShopItem
对象获取所有产品。我在ShopItem
class
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
结果总是空的。
答案 0 :(得分:2)
如果你有关系,为什么要获取请求?如果一切设置正确,您只需按关键字过滤产品。
// filter by kw
let filteredProducts = shopItem.products.filter { $0.keyword == kw }
答案 1 :(得分:1)
您的抓取请求看起来是正确的(尽管您不需要在谓词中传递self.objectID
,self
就足够了)。当我看到神秘的空关系时,通常是两件事之一:
答案 2 :(得分:1)
jsonObj["keyword"]
会返回一个可选项
String
表示形式将类似于Optional("keywordValue")
如果值为nil,则打开可选项或使用可选绑定。