// Works!
var foo = [[Int]]()
Run Code Online (Sandbox Code Playgroud)
// Neither work. Halp!
var foo = [String][Int]()
var foo = [String[Int]]()
Run Code Online (Sandbox Code Playgroud)
我发现了这个问题,这让我相信这可以做到,但不建议.
我对迅捷相对较新.我试图制作一个程序,它采用wordlist(以字符串数组的形式)并删除不包含用户选择的字母的字符串.因此,如果词汇表是["apple","banana","cherry","date","endive"],并且用户选择字母"a"(这是变量"centerletter"),"apple", "香蕉"和"日期"将被退回,因为他们做包含字母a.当输入的数组(wordlist)是像["apple","banana"]这样的标准数组时,此代码有效.但是,我对此代码的实际用途是对英语中的每个单词进行排序,如我的文件"words.txt"(我的swift项目中的一个文件)中所示.
我已将words.txt中的每个单词(由/ n分隔)分配到wordlist,如下所示(这是函数):
func arrayFromContentsOfFileWithName(fileName: String) -> [String]? {
let path = NSBundle.mainBundle().pathForResource("words", ofType: "txt")
var fileContents: String? = nil
do {
fileContents = try String(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
return fileContents!.componentsSeparatedByString("\n")
} catch _ as NSError {
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
我将wordlist分配给arrayFromContentsOfFileWithName("words.txt")的结果,如下所示:
var wordlist = arrayFromContentsOfFileWithName("words.txt")
Run Code Online (Sandbox Code Playgroud)
然后我用这段代码捣乱wordlist(试图取出不包含用户选择的字母的单词列表中的每个单词(在我的例子中为"a").这段代码适用于像["apple","banana"这样的标准数组],但不是在使用函数arrayFromContentsOfFileWithName创建的数组上.
let centerlet:Character = Character(Array(arrayLiteral: centerletter.text!)[0])
Run Code Online (Sandbox Code Playgroud)
// centerlet是用户选择的字母.
for var i = 0; i < wordlist?.count; i++ {
if wordlist![i].characters.contains(centerlet) {
print("I am leaving in \(wordlist![i]) because it contains the center …Run Code Online (Sandbox Code Playgroud) 我的任务是创建一个函数,该函数需要一个字符串和一个int的两个参数,该函数将返回一个字符串,该字符串将字符串参数重复int的次数。这是我想出的但出现错误。顺便说一句,这是我在工作时在CodeCardio上执行的,因此我无法在Xcode中对其进行测试(我的工作很糟糕并且使用Windows)
func repeater(aString: String, withNumber: Int) -> String {
let repeatedString = String(count: withNumber, repeatedValue: aString)
return repeatedString
}
Run Code Online (Sandbox Code Playgroud) 我不确定这是否可行,但我想知道是否可以将嵌套的枚举值转换为单个变量,以便将它们传递给函数参数.例:
enum Food {
enum Vegetables: String {
case Spinach = "Spinach"
case GreenBeans = "Green Beans"
}
enum Fruit: String {
case Apples = "Apples"
case Grapes = "Grapes"
}
}
func eat(meal:Food.Vegetables) {
print("I just ate some \(meal.rawValue)")
}
func eat(meal:Food.Fruit) {
print("I just ate some \(meal.rawValue)")
}
eat(Food.Fruit.Apples) //"I just ate some Spinach\n"
eat(Food.Vegetables.Spinach) //"I just ate some Apples\n"
Run Code Online (Sandbox Code Playgroud)
这里的所有东西都应该可行,但我正在尝试将我的两个吃功能合并为1.有没有办法做到这一点?我想它会涉及一个变量,它代表我可以传递给一个eat函数的所有嵌套变量类型.就像是:
func eat(fruitOrVegetable: Food.allNestedEnumeratorTypes) {
print("I just ate some \(fruitOrVegetable.rawValue)")
}
eat(Food.Vegetables.GreenBeans) //"I just ate some Green Beans\n" …Run Code Online (Sandbox Code Playgroud) 我试图像这样比较变换值,但有一个编译器错误
二元运算符'=='不能应用于两个
CGAffineTransform操作数
if view.transform == CGAffineTransformMakeScale(1, 1) {
//DO SOMETHING
}
Run Code Online (Sandbox Code Playgroud)
我们如何比较规模?
谢谢
所以我想学习swift和on按钮动作,我想将一个变量声明为一个整数,它从文本字段中收集值,计算它是否为nil并打印该值.为什么要求我使变量保持不变?
这就是我尝试过的
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var enterAge: UITextField!
@IBOutlet weak var catAge: UILabel!
@IBAction func findAge(sender: AnyObject) {
var newage = Int(enterAge.text!)
if newage! == 0
{
var catyears = newage! * 7
catAge.text = "Your cat is \(catyears) in age"
}
else
{
catAge.text = "Please enter a whole number"
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() …Run Code Online (Sandbox Code Playgroud) 我是iOS编程的新手,没有面向对象的编程背景.
我有一个应用程序,它本质上是几个Web API的用户界面.
我有一个Reachability类,可以让我检查是否有有效的互联网连接.当用户在登录页面上并且没有其他操作时,这很有效.
但是,假设我有一个带有5个按钮的视图,所有这些都需要互联网连接才能工作.在实际进行API调用之前,我是否只需要每个按钮调用此Reachability.isConnected() - > Bool方法?
我担心这不是正确的逻辑.我是否应该有后台程序来定期检查连接?
由于缺乏OOP经验,我将这个功能分解为离散类,因此我遇到了问题.
有关处理此连接检查的最佳方法的任何建议都会很棒.
我正在摆弄制作一个cocoapod,我正在努力创建一个类来自类的子类Array.
我之所以将其归为子类Array,是因为Array并且NSArray在Swift中被区别对待.
我可以创建一个这样的类:
class Test : NSArray {}
Run Code Online (Sandbox Code Playgroud)
但如果我试试这个:
class Test : Array {}
Run Code Online (Sandbox Code Playgroud)
或这个:
class Test : [AnyObject] {}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误.
我想要这个的原因主要是因为我可以使用这样的函数:
let i = myArray.randomObject()
Run Code Online (Sandbox Code Playgroud)
对此:
let i = Test.randomObject(myArray)
Run Code Online (Sandbox Code Playgroud)
我能做什么的想法(相反可能)?
我正在研究RealmSwift,它是Swift中CoreData/SQLite的现代数据库替代品.
我想知道如何实现一个Class可以管理/处理RealmSwift框架的所有查询的设计
这个问题有点类似于实现SQLite Model Manager,但对于RealmSwift.
具体来说,我不需要上面提到的单例对象/实例.
swift ×10
swift2 ×10
ios ×6
arrays ×2
class ×1
enumeration ×1
enums ×1
function ×1
inheritance ×1
objective-c ×1
realm ×1
repeat ×1
swift3 ×1