Arrays 在swift中将字符串更改为变量
我有一个Arrays 在swift中将字符串更改为变量,arrays,swift,string,Arrays,Swift,String,我有一个数组的形式 var array = ["cat1", "cat2", "cat3"] 我希望能够随机选择其中一个元素,其中每个元素都是另一个数组的实际名称 所以我也有 var cat1=[“Q1”、“Q2”、“Q3”]基本上是一系列问题 struct Topic { let questions: [String] } 这与cat2和cat3的格式类似 现在我想这样做的原因是随机选择一个问题主题,然后从所选数组中选择一个问题,我的问题是我不知道如何以编程方式使用,例如 cat2
数组
的形式
var array = ["cat1", "cat2", "cat3"]
我希望能够随机选择其中一个元素,其中每个元素都是另一个数组的实际名称
所以我也有
var cat1=[“Q1”、“Q2”、“Q3”]
基本上是一系列问题
struct Topic {
let questions: [String]
}
这与cat2
和cat3
的格式类似
现在我想这样做的原因是随机选择一个问题主题,然后从所选数组中选择一个问题,我的问题是我不知道如何以编程方式使用,例如
cat2[1]
我基本上希望显示所选元素的内容
这有可能吗?一段时间以来,我一直在努力让这个游戏玩得更好:(
谢谢!为什么不使用数组数组,比如
var cat1 = ["Q1", "Q2"]
var cat2 = ["Q10", "Q11"]
var cat3 = ["Q20", "Q21"]
var array = [cat1, cat2, cat3]
并从数组
中随机选择一个对象,该对象将是cat1
、cat2
或cat3
中的一个,代表问题数组
编辑:似乎这些是您的实例变量,或者在
viweDidLoad
中初始化它们(如果它在视图控制器中),或者使用下面的代码
var array = [["Q1", "Q2"],
["Q10", "Q11"],
["Q20", "Q21"]]
类型可以使用
[[String]]
或为此创建自定义类
要使用[[String]]
,首先声明数组cat1
、cat2
和cat3
:
let cat1 = [...]
let cat2 = [...]
let cat3 = [...]
然后你只需这样做:
let array = [cat1, cat2, cat3] // without the ""s!
有关如何选择随机项目的信息,请参阅
基本上,您可以从数组
中选择一个随机项,将结果放入一个名为随机主题
的数组或其他任何数组,然后从随机主题
中选择另一个随机项
或者,您可以创建一个类型来存储问题
struct Topic {
let questions: [String]
}
然后您创建一个
主题的数组,即[Topic]
,并执行相同的操作。您可以拥有一个数组,而不是字符串。例如:
var cat1 = ["Q1", "Q2", "Q3"]
var cat2 = ["Q1", "Q2", "Q3"]
var cat3 = ["Q1", "Q2", "Q3"]
var array = [cat1, cat2, cat3]
或二维数组:
var array = [["Q1", "Q2", "Q3"], ["Q1", "Q2", "Q3"], ["Q1", "Q2", "Q3"]]
然后您可以随机选择一条“线”,然后从中选择问题:
var question = array[randomNumber][questionNumber]
另一种选择是使用字典
。然后您将拥有以下结构:
var dict = ["cat1" : ["Q1", "Q2", "Q3"],
"cat2" : ["Q1", "Q2", "Q3"],
"cat3" : ["Q1", "Q2", "Q3"]]
请在下面的代码和检查演示也
/* DECLARING ALL THE QUESTION ARRAYS */
var cat1 = ["Q1", "Q2", "Q3", "Q4", "Q5"],
cat2 = ["Q6", "Q7"],
cat3 = ["Q8", "Q9", "Q10", "Q11", "Q12", "Q13"],
/* DECLARING ALL THE QUESTION ARRAYS INTO ANOTHER SINGLE ARRAY */
array = [cat1, cat2, cat3];
/* SELECTING WHICH QUESTION ARRAY TO PICK EITHER CAT1, CAT2 OR CAT3 USING MATH RONDOM FUNCTION */
var whichQuestionArray = array[Math.floor(Math.random() * array.length)],
/* PICKING WHICH QUESTION TO SHOW FROM ABOVE ANSWER */
selectedQuestion = whichQuestionArray[Math.floor(Math.random() * whichQuestionArray.length)];
/* PRINTING THE OUTPUT IN THE CONSOLE */
console.log("Selected Question - " + selectedQuestion);
演示用户是否会选择cate1 cate2等?我认为正确的方法是使用字典解决问题。@Leemakelvey您可以使用字典,其中每个键对应于[“cat1”:[“Q1”、“Q2”、“Q3”],“cat2”:[“Q1”、“Q2”、“Q3”]]@Salman,不,用户不会选择,它是随机的。所以我认为您想使动态变量正确吗?当我尝试此操作时,它告诉我“不能在属性初始化器中使用实例成员“cat1”;属性初始化器在“self”可用之前运行。”是否有一种在数组中写入数组的特定方法?我已经编辑了答案,这是viewController中的代码吗?然后您也可以创建IVAR作为可选项,并在viewDidLoad
I triedvar数组=[[“Q1”、“Q2”、“Q3”]、[“Q1”、“Q2”、“Q3”]、[“Q1”、“Q2”、“Q3”]]中赋值,但当我尝试打印(数组[0][]时,我会得到[“Q1”、“Q2”、“Q3”]