如何写一个简单的swift 退出程序程序

一个简单的ios程序有个bug,跪求好心人【swift吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:33,649贴子:
一个简单的ios程序有个bug,跪求好心人收藏
进去那个程序之后,随便选一行,在弹出的alertcontroller中选择&不是&那个按钮,接着程序就死掉了,到底神马原因.工程文件:import UIKitclass RestaurantTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
let restaurantNames = [&李坤&,&钟斯明&,&韦景康&,&黄轩&]
let logo=[&李坤.jpg&,&钟斯明.jpg&,&韦景康.jpg&,&黄轩.jpg&]
override func numberOfSectionsInTableView(tableView: UITableView) -& Int {
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -& Int
return self.restaurantNames.count
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:
NSIndexPath) -& MateTableViewCell {
let cellIdentifier = &Cell&
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath:
indexPath) as! MateTableViewCell
// Configure the cell...
cell.namela!.text = restaurantNames[indexPath.row]
cell.logoo!.image=UIImage(named:logo[indexPath.row])
cell.logoo.layer.cornerRadius = cell.logoo.frame.size.width / 2
cell.logoo.clipsToBounds = true
return cell }
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath:
NSIndexPath) {
// Create an option menu as an action sheet
let optionMenu = UIAlertController(title: &是傻逼吗&, message: &Make your choice&,
preferredStyle: .Alert)
// Add actions to the menu
let cancelActionHandler = {(action:UIAlertAction!) -& Void in
let alertMessage = UIAlertController(title: &回答结果&, message: &正确&, preferredStyle: .Alert)
self.presentViewController(alertMessage, animated: true, completion: nil)
let sureActionHandel={(action:UIAlertAction!) -& Void in
let cell = tableView.cellForRowAtIndexPath(indexPath)
cell?.accessoryType = .Checkmark}
let cancelAction = UIAlertAction(title: &不是&, style: .Cancel, handler: cancelActionHandler)
let sureAction = UIAlertAction(title: &是&, style: .Default, handler: sureActionHandel)
let unAction = UIAlertAction(title: &不知道&, style: .Default, handler: nil)
optionMenu.addAction(cancelAction)
optionMenu.addAction(sureAction)
optionMenu.addAction(unAction)
// Display the menu
self.presentViewController(optionMenu, animated: true, completion: nil)
override func tableView(tableView: UITableView, commitEditingStyle editingStyle:
UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
[北通]20周年阿修罗2震撼上市!!
晕……不是死掉,而是alertMessage你没有给它一个UIAlertAction,所以那个弹框关不掉
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或【译】学习使用Swift编写iOS app教程2:你的第一个项目
【译】学习使用Swift编写iOS app教程2:你的第一个项目
写在前面:
刚刚开始学习Swift开发,很幸运的是在网上闲逛的时候看到了的这些关于iOS开发的教程,写的非常详尽,还很有趣,不时会搭配一些很贱的小表情,非常对我的胃口:-)在此对其进行一些翻译,纰漏之处,欢迎大家指正。
——Schuming
Update note: This tutorial was updated for iOS 9 and Swift 2 by Brian Moakley.
恭喜,你来到了该教程的第二部分!
在该系列的,你已经学习了Swift编程的基础.你学习了变量,if/else语句,循环,可选类型等等.
在系列的第二部分里,通过创造一个简单的猜数字游戏,你将使用到新的Swift技能.
你将会使用到很多你在第一部分中学习到得概念,你可能已经忘记了某些步骤,如果是这样,那就勤快点的去查看你在上一个教程中文件吧.
准备好开始吧!
注意:这教程的这个部分,你将会开发一个命令行OS X app,因为这是作为开始的最简单的方式.因此,你需要Xcode 6.1或者更新的版本来完成这个教程.在继续下去之前,请在此确认你的Xcode版本.
写一个雏形(Writing a Prototype)
这教程系列的这个部分,你将创建一个经典的游戏应用&Higher or Lower&.计算机会生成一个神秘的随机数并让你去猜这个数字.每次猜完,计算机会告诉你你的猜测是高了还是低了,知道你猜对为止.这个游戏还会记录你猜测的次数.
首先,在你创建命令行工具应用(Command Line Tool Application)之前,你要先为你的app创建一个原型(prototype).打开Xcode,点击Get started with a playground,创建一个playground文件:
就像前一个教程那样,将名字设为MyPlayground,平台设为iOS,点击Next.把playgorund保存到你希望的地方.
删除顶部的注释代码和String声明,仅保留这一句
import UIKit
然后,把这段代码拷贝进去
func randomIntBetween(low:Int, high:Int) -& Int {
let range = high - (low - 1)
return (Int(arc4random()) % range) + (low - 1)
你不需要去担心这里的每个语句的含义,仅仅需要知道,你用代码写了一个方法,这个方法可以给你一个介于high和low之间的一个随机数.以后,你会去写你自己的方法,但是现在,你可以直接把这些方法拿来使用.就像你在时使用的Int()方法.
是时候去做一个游戏了!
是时候去做一个游戏了!你需要做的第一件事就是告诉程序去生成一个随机数作为游戏答案.在供你使用的方法中,这有一个随手可用的.在playground底部输入下面这行代码:
let answer = randomIntBetween(1, high: 100)
你刚刚声明了一个Int型的常量并把它初始化为了一个1到100之间的随机数.这样的话,答案每次都会不同,而不需要你每次手动的更改代码(这让这个游戏非常难玩).
现在,用户需要知道他们应该做什么.你可以使用print()语句.输入这行代码:
print("Enter a number between 1 and 100.")
不幸的是,playground不允许用户输入.你可以把这句用到命令行工具中(Command Line Tool).现在,创建一个新的变量去保存一个Int值来代表猜测的数字,就像这样:
var guess = 7
是时候去使用一些的知识了.你需要使用一些条件来告诉用户,他们的猜测跟实际答案相比,是大了,小了还是相等.
继续,自己来试一试.不要害怕回过头去看第一部分教程里你已经完成的playground文件.如果你被难住了,下面是答案.
if(guess & answer) {
print("Lower!")
} else if(guess & answer) {
print("Higher!")
print("Correct! The answer was \(answer).")
创建一个命令行工具应用(Command Line Tool Application)
Playgrounds用来测试一小段代码会非常棒.但是你无法通过它去获取用户的实际输入或者创建一个app.
为了能做到这些,你将需要在Xcode中创建一个不同类型的工程,在这个教程中,你将使用到OS X Command Line Tool,因为这是用来开始的最简单地办法.
记住-你必须使用Xcode 6.1或者更新的版本来完成这个教程.
打开Xcode(如果还没有打开)并点击写有Create a new Xcode project的按键.如果你不小心关闭了“Welcome to Xcode” 窗口或者已经打开了一个Xcode项目, 你可以通过File菜单并选择New & Project来创建一个新的项目.
然后,在OS X部分,选择Application然后是Command Line Tool并点击Next.
在接下来的界面中,根据提示填写:
Product Name: My First Project
Organization Name: 这项可以为空.你也可以填写你的公司名称
Organization Identifier: 输入你的网址, 比如com.rybristow
Language: Swift
点击Next.选择一个位置来保存你的项目文件.我建议你把它跟教程中得Playground文件保存在一起,这样就可以把所有东西放在一起了.现在点击Create然后Xcode会为你创建一个新项目并将它打开.
运行你的APP
就像你第一次开启你的Playground文件一样,Xcode已经在文件中创建了一些代码.尝试下点击屏幕左侧顶部的Run按钮.就是那个看起来像&Play&一样的三角形按钮.
当你点击了这个按钮,Xcode会运行你的app.检查屏幕下方.有一个横贯底部的方框.方框的右边,你可以看见程序输出了Hello, World!.
注意:如果你的屏幕比较窄,你可能无法同时看到底部方框的两边.你可能看到这样的内容:
如果是这样,在方框的右下角会有一些按钮.点击右半边为阴影的方框.
在开始写你的第一个app之前,来看一些Xcode的与众不同的特性.
Xcode左边的面板展示了项目的一系列文件.你看到的这些文件是由你所使用的项目模板自动创建的.找到My First Project文件夹中得main.swift文件,点击它,在编辑器中将它打开,会显示出下面这样.
编辑器窗口就像下面的截图这样.
这对你来说应该很熟悉.文件的最后一行:print(&Hello, World!&)就像教程系列第一部分你所使用的为print()语句一样.然而,并非完全一样.由于你工作在Playground文件中,屏幕右边会跟踪你所输入的每一个变量值.Swift文件不会这样做.然而,Swfit文件是你在创建apps时会实际使用到得文件.如果你正在使用Objective-C来创建apps,那会像之前一样,这个基本文件中会出现更多的内容.会有一行声明了main函数的代码,这是启动app所必须的.
Swift不再需要这个函数,但是项目的创建需要一个main.swift,所以要保证你不会去试着重命名这个文件.
从雏形到项目
首先,删除print()语句,只留下顶端的注释部分和import Foundation这一行.
现在,你可以将playground文件中得一些代码拷贝进来.将下面的代码从你的playground文件中拷贝出来并黏贴到你的main.swift中,就放在import Foundation下面:
let answer = randomIntBetween(0, high: 100)
print("Enter a number between 1 and 100.")
var guess = 7
if(guess & answer) {
print("Lower!")
} else if(guess & answer) {
print("Higher!")
print("Correct! The answer was \(answer).")
噢不!代码出现了错误.不要担心,这仅仅是因为计算机不认识randomIntBetween()这个方法.为了改正错误,你需要下载helper文件,文件中已经为你写好了.
为了使用这个新文件,你先要下载它,然后打开你的下载文件夹(或者其他你下载到的地方),把它拖拽到你的Xcode窗口中那个标着My First Project的文件夹中.
确保你选择了将items拷贝到你的项目中这一项.这样的话,如果原始文件的路径被更改了,你的项目仍然会保留这个文件.
保存一下项目,错误应该就会消失了.
允许用户输入
讲真(Schuming注:此处港腔),如果你每次想要猜数字的时候都必须手动改变变量的值,然后再重新运行app,那这个游戏真的很差劲.你可以通过允许用户输入来进行优化.这就是提供给你的helpers.swift文件中所包含的方法.
在main.swift中得下面两行代码之间敲几行回车
print("Enter a number between 1 and 100.")
var guess = 7
现在你有了一些工作空间了,删除这行代码
var guess = 7
首先,你要创建一个常量来存储用户的输入.在你刚刚敲出的空白区里输入下面的代码:
let userInput = input()
你刚刚创建了一个常量userInput来存储一个用户在键盘上输入的字符串.这很棒,但是你没办法比较一个字符串和一个整型值之间的大小.为了能够这样做,你首先需要将用户输入的String型值转换为Int型值.看看你能否通过的学医来独立完成这部分,如果碰到困难了,这里有答案:
let inputAsInt = Int(userInput)
if let guess = inputAsInt
因为当你输入的值真的是Int型值时,在if let大括号中的代码会被执行,所以你应该在之前的代码基础上添加else语句,你的代码现在看起来应该是这样的:
import Foundation
let answer = randomIntBetween(1, 100)
print("Enter a number between 1 and 100.")
let userInput = input()
let inputAsInt = userInput.toInt()
if let guess = inputAsInt {
if(guess & answer) {
print("Lower!")
} else if(guess & answer) {
print("Higher!")
print("Correct! The answer was \(answer).")
当用户的输入无效的内容时,你应该设想一条信息来提示他们.这个怎么样:
在if let语句的else代码块中添加:
print("Invalid input! Please enter a number.")
点击run按钮来试一下你的游戏.
成功了!但希望一次就猜对还是很难的.
你的游戏基本完成了.你要做的只剩再添加一点东西来完成你的第一个Swift游戏.现在,你的游戏只能然你猜一次.你希望它不停的问你,知道你猜对为止.为了达到这个效果,你需要使用一个while循环.你只需要一个简单地while语句然后在里面添加代码去告诉计算机合适终止运行.继续,在代码末尾加上这些:
while(true)
把除了常量answer声明以外的内容全部剪切并黏贴到while循环中,看起来是这样的:
import Foundation
let answer = randomIntBetween(0, high: 100)
var turn = 1
while(true) {
print("Guess #\(turn): Enter a number between 1 and 100.")
let userInput = input()
let inputAsInt = Int(userInput)
if let guess = inputAsInt
if(guess & answer) {
print("Lower!")
} else if(guess & answer) {
print("Higher!")
print("Correct! The answer was \(answer).")
print("Invalid input! Please enter a number.")
turn = turn + 1
print("It took you \(turn) tries.")
如果你尝试着运行app,它现在再也不会停下来了(如果你碰巧这样做了,点击run按钮右边的stop按钮).你需要实现一个去停止程序的办法.使用学习的break语句.
应该把break语句放到里面的if/else语句中else的部分:
print("Correct! The answer was \(answer).")
当用户的输入等于答案时,这回让程序退出循环.
最后,但不是必须的,你需要记录用户一共猜了多少次而得到了正确答案.
在while循环前面创建一个叫turn得新的变量并将它设置为1.
var turn = 1
现在更改print()语句以便包含用户猜测的次数.看起来是这样的:
print("Guess #\(turn): Enter a number between 1 and 100.")
变量turn最合适的增值点实在while循环的末尾.在最后一个大括号的前一行输入:
turn = turn + 1
然后,在while循环的末尾放置一个print()语句来让用户知道他们猜了多少次得出了正确答案.
print("It took you \(turn) tries.")
最后一个建议是:当出现一个非法输入时,使用continue语句.这样的话用户就不会违规了.if let语句中得else语句就会变成:
print("Invalid input! Please enter a number.")
最后的代码应该是这样:
mport Foundation
let answer = randomIntBetween(0, 100)
var turn = 1
while(true)
print("Guess #\(turn): Enter a number between 1 and 100.")
let userInput = input()
let inputAsInt = userInput.toInt()
if let guess = inputAsInt
if(guess & answer) {
print("Lower!")
} else if(guess & answer) {
print("Higher!")
print("Correct! The answer was \(answer).")
print("Invalid input! Please enter a number.")
turn = turn + 1
print("It took you \(turn) tries.")
做的好!现在运行你的app,尽情的玩吧!
Guess #1: Enter a number between 1 and 100.
Guess #2: Enter a number between 1 and 100.
Guess #3: Enter a number between 1 and 100.
Guess #4: Enter a number between 1 and 100.
Guess #5: Enter a number between 1 and 100.
Guess #6: Enter a number between 1 and 100.
Guess #7: Enter a number between 1 and 100.
Correct! The answer was 73.
It took you 7 tries.
Program ended with exit code: 0
接下来该做些什么?
这个项目的所有源代码在
你先在准备好去学习这个教程系列中的了,下一部分会讲到关于对象和类的基础概念.
Schuming注:作者信息在下面:向一切有分享精神的人致敬!一鞠躬!二鞠躬 !三鞠躬!
while(1){ 鞠躬!鞠躬!鞠躬!}
Brian Moakley
Brian is not only an iOS developer and fiction writer, he also holds the honor being Razeware‘s first fulltime employee.
Brian joins Razeware with experience from companies such as ESPN’s online fantasy team and Disney’s Internet Group. When not writing or coding, Brian enjoys story driven first person shooters, reading some great books, and he runs his own &Let's Play& channel on YouTube.
分享即可 +1积分
请登录后,发表评论
评论(Enter+Ctrl)
评论加载中...
评论加载中...
Linux系统工程师
这位童鞋很懒,什么也没有留下~~!
作者的热门手记
Copyright (C)
All Rights Reserved | 京ICP备 号-2第一个swift程序
简单的计算器 - 简书
第一个swift程序
简单的计算器
用Xcode简单实现了计算器的功能。平时没有写代码(做设计),所以错漏百出,代码质量不高。另外很多东西只是知其然,不知其所以然。一开始觉得很简单,可是后来,比我想象的复杂很多,很多逻辑没想清楚。还有就是对计算器的产品逻辑不了解,一些非正常的操作不熟悉。
写程序前必须做好准备,理清思路,逻辑清晰,预想各种特殊情况。体验已有的产品,熟悉正常的产品逻辑,避免不合常理。swift对变量的数据类型要求很严格。switch语句处理optional,“ ! ”和“ ? ”没有理解,optional拆包等等。如果要改进程序,还需要增加更多的变量,识别是否键入第二操作数,是否键入小数点,把显示和计算的数据类型分开,添加错误处理。
键入按钮分为五种:数字、符号、小数点、等号、清零
当前键入的数字永远保存到后一个操作数里,当键入符号和等号时,后一个操作数推入前一个操作数,新键入的数字依然保存在后一个操作数里。
通过按钮的文字,获取当前点击的操作。
当小数点激活时,每次键入数字小数点操作数乘以0.1,来改变当前小数点位置。
键入符号,后一个操作数推入前一个操作数里,后一个操作数清零。
清零则全部清除,包括所有的操作数。
当前程序问题
连续点击等号,无法继续计算
没有错误处理,比如除数不能为零
整数的计算,数字带了.0
分不清零和空(大问题,汗)
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
@IBOutlet weak var xianshi: UILabel!
var qianyige:Double = 0
var houyige:Double = 0
var jieguo:Double = 0
var point:Double = 0.0
var fuhao:String?
@IBAction func shuzi(sender: AnyObject) {
if (point == 0.0) {
switch sender.currentTitle! {
case "1"?:
houyige = 1 + houyige * 10
case "2"?:
houyige = 2 + houyige * 10
case "3"?:
houyige = 3 + houyige * 10
case "4"?:
houyige = 4 + houyige * 10
case "5"?:
houyige = 5 + houyige * 10
case "6"?:
houyige = 6 + houyige * 10
case "7"?:
houyige = 7 + houyige * 10
case "8"?:
houyige = 8 + houyige * 10
case "9"?:
houyige = 9 + houyige * 10
case "0"?:
houyige = houyige * 10
print("shuzi")
} else if (point != 0.0) {
switch sender.currentTitle! {
case "1"?:
houyige = (point * 1) + houyige
case "2"?:
houyige = (point * 2) + houyige
case "3"?:
houyige = (point * 3) + houyige
case "4"?:
houyige = (point * 4) + houyige
case "5"?:
houyige = (point * 5) + houyige
case "6"?:
houyige = (point * 6) + houyige
case "7"?:
houyige = (point * 6) + houyige
case "8"?:
houyige = (point * 6) + houyige
case "9"?:
houyige = (point * 6) + houyige
case "0"?:
point = point * 0.1
print("shuzi")
point = point * 0.1
xianshi.text = String(houyige)
@IBAction func add(sender: AnyObject) {
if houyige != 0 {
qianyige = houyige
houyige = 0
point = 0.0
fuhao = sender.currentTitle
@IBAction func clear(sender: AnyObject) {
qianyige = 0
houyige = 0
jieguo = 0
point = 0.0
xianshi.text = "0"
@IBAction func output(sender: AnyObject) {
if (qianyige != 0) && (houyige != 0) && (fuhao != "") {
switch fuhao! {
case "加":
jieguo = qianyige + houyige
case "减":
jieguo = qianyige - houyige
case "乘":
jieguo = qianyige * houyige
case "除":
jieguo = qianyige / houyige
print("output")
xianshi.text = String(jieguo)
fuhao = ""
houyige = 0
qianyige = jieguo
point = 0.0
@IBAction func point(sender: AnyObject) {
if point == 0.0 {
point = 0.1

我要回帖

更多关于 第一个swift程序 的文章

 

随机推荐