无法获取 SWIFT 中的数组值
Unable to get Array Value in SWIFT
我从 parse 中检索值并一个一个地存储在一个名为 "sto_tit" 的数组中。
但是如果我尝试打印这些值,我将无法打印。它只在循环内部打印,但不在 FOR LOOP 或 OUTSIDE ELSE 块外部打印,我不知道我的代码中有什么错误。请指导我!
我的代码如下:
func parse_db()
{
var sto_tit = [String]() // EITHER GLOBAL DECLARATION or INSIDE BLOCK, SAME ISSUE
// FACING
par_query.selectKeys(["story_title"])
par_query.findObjectsInBackgroundWithBlock({(NSArray objects, NSError error) in
if (error != nil) {
NSLog("error " + error.localizedDescription)
}
else
{
self.results = NSArray(array: objects)
//NSLog("results %@", results)
for i in 0...self.results.count
{
self.par_object = self.results.objectAtIndex(i) as PFObject
var sto = self.par_object["story_title"] as String
sto_tit.append(sto)
println("Check_1 \(sto_tit)") // PRINTING [A],[AB],[ABC] ...
} //FOR ENDS
println("HELLO") // GETS SKIPPED
println("Check_2 \(sto_tit)") // GETS SKIPPED
} // ELSE ENDS
println("Check_3 \(sto_tit)") // GETS SKIPPED
}) //PARSE ENDS
println("Check_4 \(sto_tit)") //PRINTING "Check_4 []"
} // BLOCK ENDS
我将此作为答案发布,因为它包含一些代码。我希望这对你有帮助,但如果没有请告诉我。
我将以下代码粘贴到我的一个 Swift 应用程序中:
var sto_tit:[String] = ["Yes", "No", "Maybe"];
if(false)
{
}else{
for var i:Int = 0; i < 3; i++
{
var sto = "story_title"
sto_tit.append(sto)
println("Check_1 \(sto_tit)")
}
println("Check_2 \(sto_tit)")
}
println("Check_3 \(sto_tit)")
打印结果符合预期:
Check_1 [是,否,也许,story_title]
Check_1 [是,否,也许,story_title,story_title]
Check_1 [是,不是,也许,story_title,story_title,story_title]
Check_2 [是,否,也许,story_title,story_title,story_title]
Check_3 [是,否,也许,story_title,story_title,story_title]
请注意,我的代码有一些细节与您的不同,但这是我能尽快得出的最接近的代码。
另请注意 check_2 不会被跳过。我认为您的代码中有些内容未按原样发布。
编辑:
这里有一个有趣的异常,这段代码的行为符合预期:
var sto_tit:[String] = ["Yes", "No", "Maybe"];
println("sto_tit count = \(sto_tit.count)")
var j :Int = sto_tit.count
for var i:Int = 0; i < j; i++
{
var sto = "story_title"
sto_tit.append(sto)
println("Check_1 \(sto_tit)")
}
但是此代码将 for 循环发送到无限循环中:
var sto_tit:[String] = ["Yes", "No", "Maybe"];
println("sto_tit count = \(sto_tit.count)")
for var i:Int = 0; i < sto_tit.count; i++
{
var sto = "story_title"
sto_tit.append(sto)
println("Check_1 \(sto_tit)")
}
这是怎么回事?
我从 parse 中检索值并一个一个地存储在一个名为 "sto_tit" 的数组中。 但是如果我尝试打印这些值,我将无法打印。它只在循环内部打印,但不在 FOR LOOP 或 OUTSIDE ELSE 块外部打印,我不知道我的代码中有什么错误。请指导我!
我的代码如下:
func parse_db()
{
var sto_tit = [String]() // EITHER GLOBAL DECLARATION or INSIDE BLOCK, SAME ISSUE
// FACING
par_query.selectKeys(["story_title"])
par_query.findObjectsInBackgroundWithBlock({(NSArray objects, NSError error) in
if (error != nil) {
NSLog("error " + error.localizedDescription)
}
else
{
self.results = NSArray(array: objects)
//NSLog("results %@", results)
for i in 0...self.results.count
{
self.par_object = self.results.objectAtIndex(i) as PFObject
var sto = self.par_object["story_title"] as String
sto_tit.append(sto)
println("Check_1 \(sto_tit)") // PRINTING [A],[AB],[ABC] ...
} //FOR ENDS
println("HELLO") // GETS SKIPPED
println("Check_2 \(sto_tit)") // GETS SKIPPED
} // ELSE ENDS
println("Check_3 \(sto_tit)") // GETS SKIPPED
}) //PARSE ENDS
println("Check_4 \(sto_tit)") //PRINTING "Check_4 []"
} // BLOCK ENDS
我将此作为答案发布,因为它包含一些代码。我希望这对你有帮助,但如果没有请告诉我。
我将以下代码粘贴到我的一个 Swift 应用程序中:
var sto_tit:[String] = ["Yes", "No", "Maybe"];
if(false)
{
}else{
for var i:Int = 0; i < 3; i++
{
var sto = "story_title"
sto_tit.append(sto)
println("Check_1 \(sto_tit)")
}
println("Check_2 \(sto_tit)")
}
println("Check_3 \(sto_tit)")
打印结果符合预期:
Check_1 [是,否,也许,story_title]
Check_1 [是,否,也许,story_title,story_title]
Check_1 [是,不是,也许,story_title,story_title,story_title]
Check_2 [是,否,也许,story_title,story_title,story_title]
Check_3 [是,否,也许,story_title,story_title,story_title]
请注意,我的代码有一些细节与您的不同,但这是我能尽快得出的最接近的代码。
另请注意 check_2 不会被跳过。我认为您的代码中有些内容未按原样发布。
编辑:
这里有一个有趣的异常,这段代码的行为符合预期:
var sto_tit:[String] = ["Yes", "No", "Maybe"];
println("sto_tit count = \(sto_tit.count)")
var j :Int = sto_tit.count
for var i:Int = 0; i < j; i++
{
var sto = "story_title"
sto_tit.append(sto)
println("Check_1 \(sto_tit)")
}
但是此代码将 for 循环发送到无限循环中:
var sto_tit:[String] = ["Yes", "No", "Maybe"];
println("sto_tit count = \(sto_tit.count)")
for var i:Int = 0; i < sto_tit.count; i++
{
var sto = "story_title"
sto_tit.append(sto)
println("Check_1 \(sto_tit)")
}
这是怎么回事?