1. 定义变量和常量:
var variableName = "value" // 变量
let constantName = "value" // 常量
2. Swift 中的基本数据类型包括:String, Int, Float 和 Double。
3. 逻辑操作符有:&&(与)、||(或)以及 !(非)。
4. 关系运算符包含:==(等于)、!=(不等于)、>=(大于等于)和 <=(小于等于)。
5. 在 Storyboard 中绑定界面元素到代码,可以通过右键拖拽(例如按钮或标签),然后选择对应的变量或方法。
6. 类似静态函数的定义方式为:
class func methodName() -> Type {}
静态变量则使用以下方式定义:
static var variableName: Type = value
调用时需通过类名访问,如:ClassName.variableName。
7. 使用感叹号 (!) 的含义是强制解包,表示该值可能存在 nil。
8. 对象实例化示例:
let instance = MyClass.init(param1: value1, param2: value2)
9. 创建新 Class 需要在 Xcode 中选择 Cocoa Touch Class。
10. Label 自动拉伸功能启用后,文本内容不会被截断。
11. 数组操作:
var array = [String]()
array.append("One")
array += ["Two", "Three"]
array.insert("Zero", at: 0)
array.remove(at: 1)
print(array.count) // 获取数组长度
12. For 循环示例:
for i in 0..<count {
print(i)
}
</code>
13. 日期比较:
let today = Date()
let otherDate = ...
if today.compare(otherDate) == .orderedAscending {
print("Today is earlier.")
}
14. UserDefaults 示例:
let prefs = UserDefaults.standard
prefs.set("sherlock.holmes", forKey: "username")
prefs.set(10, forKey: "booksInList")
prefs.synchronize()
if let username = prefs.string(forKey: "username") {
print(username)
}
15. Core Data 操作示例:
import CoreData
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var managedObjectContext: NSManagedObjectContext!
override func viewDidLoad() {
super.viewDidLoad()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
managedObjectContext = appDelegate.persistentContainer.viewContext
}
func loadBooks() -> [Book] {
let fetchRequest: NSFetchRequest<Book> = Book.fetchRequest()
do {
return try managedObjectContext.fetch(fetchRequest)
} catch {
NSLog("Error fetching books: %@", error as NSError)
return []
}
}
@IBAction func addNew(_ sender: Any) {
let book = NSEntityDescription.insertNewObject(forEntityName: "Book", into: managedObjectContext) as! Book
book.title = "New Book \(loadBooks().count)"
do {
try managedObjectContext.save()
} catch {
NSLog("Error saving context: %@", error as NSError)
}
tableView.reloadData()
}
}
16. 设置删除规则:
- Deny:如果关联对象存在,则无法删除。
- Nullify:将关联对象设置为 nil。
- Cascade:删除主对象时同时删除所有相关联的对象。
- No Action:不对关联对象做任何处理。
17. 协议与代理:
protocol RandomNumberGenerator {
var mustBeSettable: Int { get set }
var doesNotNeedToBeSettable: Int { get }
func random() -> Double
}
protocol GuessDelegate {
func userDidFinish(_ controller: GuessInputViewController, guess: String)
}
class GuessInputViewController: UIViewController {
var delegate: GuessDelegate?
var previousGuess: String = ""
@IBOutlet weak var guessLabel: UILabel!
@IBOutlet weak var guessTextField: UITextField!
@IBAction func saveGuess(_ sender: AnyObject) {
if let delegate = delegate, let guessText = guessTextField.text {
delegate.userDidFinish(self, guess: guessText)
}
}
}
class AnotherClass: GuessDelegate {
func userDidFinish(_ controller: GuessInputViewController, guess: String) {
print("Received guess: \(guess)")
}
}