Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 核心数据';s托管对象属性作为参数_Swift_Core Data_Nspredicate - Fatal编程技术网

Swift 核心数据';s托管对象属性作为参数

Swift 核心数据';s托管对象属性作为参数,swift,core-data,nspredicate,Swift,Core Data,Nspredicate,any第一条语句不返回任何值,而第二条语句工作正常。是否可以将属性名指定为参数之一以避免硬编码 let predicate = NSPredicate(format: "%@ == %@", "id","553178666d61d70c24fe4221") let predicate = NSPredicate(format: "id == %@", "553178666d61d70c24fe4221") 这是一个完整的解决方案,多亏了@Free昵称 class func searchF

any第一条语句不返回任何值,而第二条语句工作正常。是否可以将属性名指定为参数之一以避免硬编码

let predicate = NSPredicate(format: "%@ == %@", "id","553178666d61d70c24fe4221")

let predicate = NSPredicate(format: "id == %@", "553178666d61d70c24fe4221")
这是一个完整的解决方案,多亏了@Free昵称

  class func searchForObject(propertyName:NSString,property:NSString,className:String,single:Bool )->AnyObject?{
        let fetchRequest = NSFetchRequest(entityName: className)
        let predicate = NSPredicate(format: "%K == %@", argumentArray: [propertyName, property])
        var appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        fetchRequest.predicate = predicate
          // Execute the fetch request, and cast the results to an array of LogItem objects
        var error:NSError?
        if let fetchResults = appDelegate.managedObjectContext!.executeFetchRequest(fetchRequest, error: &error) as [AnyObject]? {
            if let e = error{
                println(e.debugDescription)

            }

            if single {
                var object: AnyObject? = fetchResults.first

                return object;
            }
            else{
                return fetchResults
            }
        }
    return nil;
    }

请尝试使用
%K
而不是
%@
作为属性名称。 像这样:

资料来源: 从文档中:

格式字符串支持printf样式的格式说明符,如%x(请参阅格式化字符串对象)。两个重要的格式说明符是
%@
%K

  • %@
    是对对象值(通常是字符串、数字或日期)的var arg替换

  • %K
    是密钥路径的变量arg替换

let predicate = NSPredicate(format: "%K == %@", "id","553178666d61d70c24fe4221")