无法获取要在 UITextView swift 中显示的正确文件



我已经声明了一个全局变量'var recipes = String: PFFile'。parse.com,我创建了一个名为"食谱"的列,类型为文件,并上传了.txt包含食谱的文件。我正在尝试将.txt文件的内容从解析加载到 UITextView。我尝试了很多东西,这就是我所拥有的:

var recipes = [String: PFFile]()
var valueToPass: String!
var valuePassed: String!
var appetizer = [String]()
var images = [String: UIImage]()
override func viewDidLoad() {
    super.viewDidLoad()
    let query = PFQuery(className: "Appetizers")
    query.orderByAscending("recipe")
    query.findObjectsInBackgroundWithBlock { (objects, error) in
        guard error == nil, let objects = objects else {
            print(error)
            return
        }
        for object in objects {
            // ... Appetizer Name
            let appetizerName = object.objectForKey("appetizer") as! String
            self.name.text = self.valuePassed
            // ... Recipe
            var recipes = [String: String]()
            let recipeFile = object["recipe"] as! PFFile
            do {
                let recipeData = try recipeFile.getData()
                let recipe = String(data: recipeData , encoding:NSUTF8StringEncoding)!
                print(recipe)  // recipe is now a string you can store or display
                self.myTextView.text = recipe
            } catch {
                print("something went wrong")
            }

            // ... Image
            let imageFile = object["imageFiles"] as!PFFile
            imageFile.getDataInBackgroundWithBlock({ (imageData, error) -> Void in
                if error == nil {
                    let data = imageData
                } else {
                    print(error)
                }
                if let data = imageData {
                    self.images[appetizerName] = UIImage(data: data)
                    self.imageView.image = self.images[self.valuePassed]
                }
            })
        }
    }
}

能够显示带有上述代码的食谱,但不能显示我选择的配方。 它以随机顺序(但每次相同的顺序)打印日志中的所有配方,最后一个是在UITextView中打印的配方。

似乎无法得到我选择的那个。

创建类型为 [string: PFFile] 的字典recipes。据推测,这是为了包含 Parse 返回的所有配方。然后你永远不会填充该字典。

稍后在您的代码中,您有以下行:

let recipeFile = object["recipe"] as! PFFile

这是您要添加到字典中的PFFile吗?

如果是这样,那么您可以使用这样的代码:

let someKey = //Whatever string key you want to use to store a recipe
recipes[someKey] = recipeFile

您说"我正在尝试将.txt文件的内容从解析加载到 UITextView。

所以你试图将所有文本文件的组合内容添加到一个UITextView

在这种情况下,您需要更改此行:

let recipe = String(data: recipeData , encoding:NSUTF8StringEncoding)!

假设您创建了一个新的变量:

var allRecipesText = String()

然后,您可以在将配方隐藏到字符串的行下方添加一行:

let recipe = String(data: recipeData , encoding:NSUTF8StringEncoding)!
//concatenate the new recipe string to the end of allRecipiesText
allRecipiesText += recipe

您确实需要保存 PFFile 对象,还是要保存转换后的文本?你真的想把你的食谱放在字典里,还是宁愿把它们放在一个数组中?

使用此代码,我能够显示我在上一个表视图控制器中选择的配方:

let recipeFile = object["recipe"] as! PFFile

            do {
                let recipeData = try recipeFile.getData()
                let recipe = String(data: recipeData , encoding:NSUTF8StringEncoding)!
                // recipe is now a string you can store or display
                self.recipes[appetizerName] = recipe
                self.myTextView.text = self.recipes[self.valuePassed]
            } catch {
                print("something went wrong")
            }
开胃菜

名称:用作开胃菜的名称值已传递:表视图控制器中的选定配方

最新更新