我已经声明了一个全局变量'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")
}
开胃菜名称:用作开胃菜的名称值已传递:表视图控制器中的选定配方