gpt4 book ai didi

ios - 如何在 Realm swift 中使用 LIKE/CONTAINS 查询双值

转载 作者:行者123 更新时间:2023-12-01 19:33:46 24 4
gpt4 key购买 nike

Realm LIKE/CONTAINS 适用于字符串值。如何搜索与 LIKE/CONTAINS 相同的 Double 值

public class ProductModel: Object {
@objc dynamic var id: String? = ""
@objc dynamic var amount: Double = 0.0
}

func searchProductByAmount(searchValue:Double) -> Results<ProductModel> {
let realm = RealmManager.Product
let predicate = NSPredicate(format: "amount CONTAINS %@", searchAmount)
let products = realm.objects(ProductModel.self).filter(predicate)
return products
}

产品型号记录:
  • id:“1”,金额:10.00
  • id:“2”,金额:100.00
  • id:“3”,金额:101.00
  • id:“3”,金额:200.00

  • searchProductByAmount(searchValue:10)//应该返回 10, 100, 101 条记录

    最佳答案

    您可以将 double 值存储为字符串并使用 LIKE 和 CONTAINS。

    public class ProductModelS: Object {
    @objc dynamic var id: String? = ""
    @objc dynamic var amount: String = "0.0"

    convenience init(id: String?, amount: String) {
    self.init()
    self.id = id
    self.amount = amount
    }
    }


    class ProductModelTests: XCTestCase {

    func testDoubleAsString() {
    let models = [
    ProductModelS(id: UUID().uuidString, amount: String(format: "%.02f", 10.00)),
    ProductModelS(id: UUID().uuidString, amount: String(format: "%.02f", 100.00)),
    ProductModelS(id: UUID().uuidString, amount: String(format: "%.02f", 101.00)),
    ProductModelS(id: UUID().uuidString, amount: String(format: "%.02f", 200.00)),
    ]

    let config = Realm.Configuration(inMemoryIdentifier: UUID().uuidString)

    do {
    let realm = try Realm(configuration: config)
    try realm.write {
    realm.add(models)
    }

    let containsResults = realm.objects(ProductModelS.self)
    .filter("amount CONTAINS %@", "\(10)")
    let likeResults = realm.objects(ProductModelS.self)
    .filter("amount LIKE %@", "*\(10)*")
    print("CONTAINS: \(containsResults)")
    print("LIKE: \(likeResults)")
    } catch {
    print("Product model error \(error)")
    }
    }
    }

    关于ios - 如何在 Realm swift 中使用 LIKE/CONTAINS 查询双值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60978974/

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