Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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
Ios 检索多个解析图像(Swift)_Ios_Database_Swift_Parse Platform - Fatal编程技术网

Ios 检索多个解析图像(Swift)

Ios 检索多个解析图像(Swift),ios,database,swift,parse-platform,Ios,Database,Swift,Parse Platform,下面是我通常如何从Parse.com检索图像的示例。我现在遇到了这样的情况,我想从Parse中检索20多个图像,但我正在寻找一种更有效的方法。请有人解释一下如何在代码中实现这一点,以及我应该如何在Parse中存储20+pf文件 func loadData(){ let findDataParse = PFQuery(className: "JobListing") findDataParse.findObjectsInBackgroundWithBlock{ (objects: [PFO

下面是我通常如何从Parse.com检索图像的示例。我现在遇到了这样的情况,我想从Parse中检索20多个图像,但我正在寻找一种更有效的方法。请有人解释一下如何在代码中实现这一点,以及我应该如何在Parse中存储20+pf文件

func loadData(){
let findDataParse = PFQuery(className: "JobListing")
findDataParse.findObjectsInBackgroundWithBlock{
    (objects: [PFObject]?, error: NSError?) -> Void in
    if (error == nil) {
        for object in objects! {
           let userImageFile = object["ImageOne"] as! PFFile
            let userImageFile1 = object["ImageTwo"] as! PFFile
            let userImageFile2 = object["ImageThree"] as! PFFile
            userImageFile.getDataInBackgroundWithBlock {
                (imageData: NSData?, error: NSError?) -> Void in
                let listingImage1 = UIImage(data:imageData!)
                userImageFile1.getDataInBackgroundWithBlock {
                    (imageData1: NSData?, error1: NSError?) -> Void in
                    let listingImage2 = UIImage(data:imageData1!)
                    userImageFile2.getDataInBackgroundWithBlock {
                        (imageData2: NSData?, error1: NSError?) -> Void in
                        let listingImage3 = UIImage(data:imageData2!)

self.flyerImageLarge1.image = listingImage1
self.flyerImageLarge2.image = listingImage2
self.flyerImageLarge3.image = listingImage3
}}}}}}}

您可以使用ParseUI获得更干净、更高效的代码。 为此,添加ParseUI框架。 然后,单击图像并将“类”更改为PFImageView。

完成此操作后,您可以轻松设置PFImageView的图像:

if let myServerImage = object.valueForKey("imageFromUser") as? PFFile {
        self.myImage.file = myServerImage
        self.myImage.loadInBackground()
    }
其中,myServerImage是从解析服务器检索的图像,myImage是故事板中的图像

在您的情况下,它将是这样的:

func loadData(){
    let findDataParse = PFQuery(className: "JobListing")
    findDataParse.findObjectsInBackgroundWithBlock{
    (objects: [PFObject]?, error: NSError?) -> Void in
    if (error == nil) {
        if let myServerImage = object.valueForKey("ImageOne") as? PFFile {
            self.flyerImageLarge1.file = myServerImage
            self.flyerImageLarge1.loadInBackground()
        }
    if let myServerImage = object.valueForKey("ImageTwo") as? PFFile {
            self.flyerImageLarge2.file = myServerImage
            self.flyerImageLarge2.loadInBackground()
        }
    if let myServerImage = object.valueForKey("ImageThree") as? PFFile {
            self.flyerImageLarge3.file = myServerImage
            self.flyerImageLarge3.loadInBackground()
        }
    }
}

我建议添加if-let语句,以便在图像不存在时不会出现错误。

您可以使用ParseUI来获得更干净、更高效的代码。 为此,添加ParseUI框架。 然后,单击图像并将“类”更改为PFImageView。

完成此操作后,您可以轻松设置PFImageView的图像:

if let myServerImage = object.valueForKey("imageFromUser") as? PFFile {
        self.myImage.file = myServerImage
        self.myImage.loadInBackground()
    }
其中,myServerImage是从解析服务器检索的图像,myImage是故事板中的图像

在您的情况下,它将是这样的:

func loadData(){
    let findDataParse = PFQuery(className: "JobListing")
    findDataParse.findObjectsInBackgroundWithBlock{
    (objects: [PFObject]?, error: NSError?) -> Void in
    if (error == nil) {
        if let myServerImage = object.valueForKey("ImageOne") as? PFFile {
            self.flyerImageLarge1.file = myServerImage
            self.flyerImageLarge1.loadInBackground()
        }
    if let myServerImage = object.valueForKey("ImageTwo") as? PFFile {
            self.flyerImageLarge2.file = myServerImage
            self.flyerImageLarge2.loadInBackground()
        }
    if let myServerImage = object.valueForKey("ImageThree") as? PFFile {
            self.flyerImageLarge3.file = myServerImage
            self.flyerImageLarge3.loadInBackground()
        }
    }
}
我建议添加if-let语句,以便在图像不存在时不会出现错误。

如果我所说的是显而易见的或已经考虑过的,请原谅我。我不完全熟悉你在做什么,但它看起来很适用

假设您尚未使用它,则需要使用一个。基本上,一个调用自身直到结束条件的函数。

我不熟悉您的代码,因此我将用一个简单的JavaScript示例演示:

/* A "public" function that your program will call */
function getStuff(total)
{
    //quick positive check
    if (total > 0)
    {
        //start and pass in an empty array
        return _getStuffRecursion(total, []);
    }
    else
    {
        //total is not positive, return empty array
        return [];
    }
}

/* A "private" function that will do the recursion */
function _getStuffRecursion(total, resultsArray)
{
    //do work this is where you would call your function that does the work.
    var someResource = Math.random();

    //add work to the array collected so far
    resultsArray.push(someResource);

    //change count
    var newTotal = total - 1;

    //check condition
    if (newTotal > 0)
    {
        //recursive condition, go to the next level down and pass in what is collected so far
        return _getStuffRecursion(newTotal, resultsArray)
    }
    else
    {
        //end condition met, just return the array with everything collected from the upper levels
        return resultsArray;
    }
}

/* Start */

//get started by calling the "public" function
var results = getStuff(20);

//print it to console
console.log(results);
如果这个解决方案有效,我相信您可以调整它以进行解析。

如果我所说的是显而易见的或已经考虑过的,请原谅我。我不完全熟悉你在做什么,但它看起来很适用

假设您尚未使用它,则需要使用一个。基本上,一个调用自身直到结束条件的函数。

我不熟悉您的代码,因此我将用一个简单的JavaScript示例演示:

/* A "public" function that your program will call */
function getStuff(total)
{
    //quick positive check
    if (total > 0)
    {
        //start and pass in an empty array
        return _getStuffRecursion(total, []);
    }
    else
    {
        //total is not positive, return empty array
        return [];
    }
}

/* A "private" function that will do the recursion */
function _getStuffRecursion(total, resultsArray)
{
    //do work this is where you would call your function that does the work.
    var someResource = Math.random();

    //add work to the array collected so far
    resultsArray.push(someResource);

    //change count
    var newTotal = total - 1;

    //check condition
    if (newTotal > 0)
    {
        //recursive condition, go to the next level down and pass in what is collected so far
        return _getStuffRecursion(newTotal, resultsArray)
    }
    else
    {
        //end condition met, just return the array with everything collected from the upper levels
        return resultsArray;
    }
}

/* Start */

//get started by calling the "public" function
var results = getStuff(20);

//print it to console
console.log(results);

如果此解决方案有效,我相信您可以将其应用于解析。

您是否建议我对解析中的20多个图像执行此操作?您是否建议我对解析中的20多个图像执行此操作?抱歉,我不知道这是如何应用的。请原谅我不理解。您介意进一步解释吗?当后续操作依赖于之前的操作时,递归函数很有用。你的代码需要吗?如果不是,也许一个简单的“for循环”就可以了。对不起,我不明白这是怎么应用的。请原谅我不理解。您介意进一步解释吗?当后续操作依赖于之前的操作时,递归函数很有用。你的代码需要吗?如果不是,也许一个简单的“for循环”就可以了。