我正在尝试使用 swift 为 iOS 构建一个测验应用程序。我必须提出 450 个问题,但这会在 swift 文件中占用很多行。可以看到我的4道题在代码上有4行,想想450道题。有什么建议可以让我从另一个文件中检索问题吗?是否会发生任何 ram 过载并使应用程序崩溃?这是我的代码:
import UIKit
struct Question {
var Question: String!
var Answers: [String]!
var Answer: Int!
}
class LittleTestViewController: UIViewController {
//MARK: Properties
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet var buttons: [UIButton]!
var Questions = [Question]()
var QNumber = Int()
var answerNumber = Int()
override func viewDidLoad() {
super.viewDidLoad()
Questions = [
Question(Question:"KEK1.Tα Συστήματα μη Επανδρωμένων Αεροσκαφών(ΣμηΕΑ) επιτρέπεται να ίπτανται:", Answers: ["α) Με μέγιστο ύψος τα 400 πόδια (FT) επάνω από το έδαφος ή την επιφάνεια της θάλασσας (AGL,MSL).","β)Εντός Προσωρινών Αποκλειστικών Περιοχών (Temporary Segregated Areas TSA) για πτήσεις ΣμηΕΑ.","γ)Σε καθορισμένα ίχνη και ύψη που προσδιορίζονται με ειδικές άδειες των Υπηρεσιών Εναέριας Κυκλοφορίας της ΥΠΑ.","δ) Όλες οι απαντήσεις είναι σωστές."], Answer: 3),
Question(Question:"ΚΕK2. Παρέχεται υπηρεσία Ελέγχου Εναέριας Κυκλοφορίας ‐ ΕΕΚ (Air Traffic Control‐ATC) στις πτήσεις ΣμηΕΑ;", Answers: ["α) Όχι, δεν παρέχονται υπηρεσίες εναέριας κυκλοφορίας ‐ ΕΚ (Air Traffic Services ‐ATS)","β) Ναι, παρέχεται υπηρεσία Ελέγχου Εναέριας Κυκλοφορίας (ATC).","γ) Όταν απαιτείται, οι Υπηρεσίες Εναέριας Κυκλοφορίας της ΥΠΑ εκδίδουν ειδικές άδειες και οδηγίες.","δ) Οι απαντήσεις α και γ είναι σωστές."], Answer: 3),
Question(Question:"KEK3. Τα ΣμηΕΑ (UAS) επιτρέπεται να πετούν:", Answers: ["α) Κάτω από ύψος 400 ποδιών, δηλαδή, κάτω από τα επιτρεπόμενα όρια για την κυκλοφορία επανδρωμένων αεροσκαφών.","β) Εντός προσωρινών περιοχών που προσδιορίζονται από τις υπηρεσίες εναέριας κυκλοφορίας της ΥΠΑ.","γ) Κάτω από ύψος 46.000 ποδιών, δηλαδή, κάνω από τα ανώτερα όρια του εναέριου χώρου για την κυκλοφορία επανδρωμένων αεροσκαφών.","δ) Οι απαντήσεις α και β είναι σωστές."], Answer: 3),
Question(Question:"ΚΕK4. Η διεξαγωγή Πτήσεων ΣμηΕΑ (UAS) απαγορεύεται γενικά σε εναέριο χώρο:", Answers: ["α) Σε περιοχές που διενεργούνται πτήσεις επανδρωμένων αεροσκαφών.","β) Σε απόσταση μικρότερη των 8 χιλιομέτρων από αεροδρόμια.","γ) Απαγορεύεται η πτήση ΣμηΕΑ (UAS) ανοικτής (Open) κατηγορίας επάνω από συγκεντρώσεις προσώπων.","δ) Όλες οι απαντήσεις είναι σωστές."], Answer: 3)]
pickQuestion()
}
func pickQuestion ()
{
if Questions.count > 0 {
QNumber = Questions.count
questionLabel.text = Questions[QNumber].Question
answerNumber = Questions[QNumber].Answer
for i in 0..<buttons.count{
buttons[i].setTitle(Questions[QNumber].Answers[i], for: UIControlState.normal)
}
Questions.remove(at: QNumber)
}
else
{
NSLog("Done")
}
}
@IBAction func bt1(_ sender: Any) {
if answerNumber == 0 {
pickQuestion()
}
else
{
NSLog("Wrong!")
pickQuestion()
}
}
@IBAction func btn2(_ sender: Any) {
if answerNumber == 1 {
pickQuestion()
}
else
{
NSLog("Wrong!")
pickQuestion()
}
}
@IBAction func btn3(_ sender: Any) {
if answerNumber == 2 {
pickQuestion()
}
else
{
NSLog("Wrong!")
pickQuestion()
}
}
@IBAction func btn4(_ sender: Any) {
if answerNumber == 3 {
pickQuestion()
}
else
{
NSLog("Wrong!")
pickQuestion()
}
}
}
最佳答案
您可以创建一个包含所有数据的JSON 文件,即
1. Questions.json
[{"question":"ques1","answers":["ans1", "ans2", "ans3"], "answer": 1},
{"question":"ques2","answers":["ans1", "ans2", "ans3"], "answer": 2},
{"question":"ques3","answers":["ans1", "ans2", "ans3"], "answer": 3}]
2. 读取文件内容并创建您的问题数组
if let path = Bundle.main.path(forResource: "Questions", ofType: "json")
{
if let array = (try? JSONSerialization.jsonObject(with: Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe), options: JSONSerialization.ReadingOptions.allowFragments)) as? [[String : Any]]
{
var questionsArray = [Question]()
for item in array
{
questionsArray.append(Question(item: item))
}
print(questionsArray)
}
}
3. 问题结构:
struct Question
{
var Question: String?
var Answers: [String]?
var Answer: Int?
init(item: [String: Any])
{
self.Question = item["question"] as? String
self.Answers = item["answers"] as? [String]
self.Answer = item["answer"] as? Int
}
}
关于ios - 如何在 iOS 应用程序上检索测验问题并打印结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47026744/
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除