首先要编写splist文件将要保存的字段写好。
代码部分,初始化
var gloDefault=NSUserDefaults.standardUserDefaults()
写入
netDefault.setObject(“simonzhang.net”, forKey: “userName”)
获取
let uu=netDefault.objectForKey(“userName”) as! NSString
最初使用String取出来的总是空,改为NSString就正常了。
首先要编写splist文件将要保存的字段写好。
代码部分,初始化
var gloDefault=NSUserDefaults.standardUserDefaults()
写入
netDefault.setObject(“simonzhang.net”, forKey: “userName”)
获取
let uu=netDefault.objectForKey(“userName”) as! NSString
最初使用String取出来的总是空,改为NSString就正常了。
class choiceView:UIViewController,UITableViewDataSource,UITableViewDelegate{
@IBOutlet weak var userTableView: UITableView!
var refreshControl = UIRefreshControl()
var dataArray:[JSON]=[]
override func viewDidLoad() {
super.viewDidLoad()
self.automaticallyAdjustsScrollViewInsets = false
userTableView.delegate=self
userTableView.dataSource=self
refreshControl.addTarget(self, action: “refreshData”, forControlEvents: UIControlEvents.ValueChanged)
refreshControl.attributedTitle = NSAttributedString(string: “松手刷新新闻”)
userTableView.addSubview(refreshControl)
refreshData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// 刷新数据
func refreshData() {
netManage.request(.GET,url+”/v1/userstocknew”)
.responseJSON{ get in
let get_data=JSON(get.result.value!)[“stockList”]
self.dataArray=get_data.array!
self.userTableView.reloadData()
self.refreshControl.endRefreshing()
}
}
// UITableViewDataSource
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataArray.count;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let ut=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: “cell”)
let stockData=JSON(self.dataArray)
ut.textLabel?.text=stockData[indexPath.row][“name”].stringValue
let one_data=stockData[indexPath.row][“price”].stringValue+” “+stockData[indexPath.row][“floper”].stringValue
ut.detailTextLabel?.text=one_data
return ut
}
}
网络部分使用Alamofire。
登录成功后将登录状态保存在NSUserDefaults中。网络部分,如session等信息均由Alamofire处理保存。
处理流程如下:
1)首先建立一个plist文件。key为login,布尔型,默认值为False
2)定义保存状态的变量
//全局网络保持配置。初始化参数为False
var netDefault=NSUserDefaults.standardUserDefaults()
3)登录如果登录成功,则记录登录状态
netDefault.setBool(true, forKey: “login”)
4)退出app,再次加载后先判断,如果已经登录,则跳转到默认页,如果没有登录则条转到登录页。
此处判断要在故事版加载完成后再进行判断。“toDfaultPage”为Storyboard Segue中identified的跳转值。
//故事版加载后处理
override func viewDidAppear(animated: Bool) {
self.mvHomeView()
}
func mvHomeView() {
if netDefault.objectForKey(“login”)?.boolValue == true{
self.performSegueWithIdentifier(“toDefaultPage”, sender: self)
}
}
let getSte=”hello.nihao”
let cutStr=getStr.characters.split{$0 == “.”}
print(“\(cutStr[0])”)
使用tornado做API服务器,返回数据为json,编码使用utf-8。但是在客户端显示为utf-8的编码,而不是中文。
效果如下:
测试内如
“测试”
直接打印的编码返回
‘\xe6\xb5\x8b\xe8\xaf\x95′
decode utf-8后的编码返回
u’\u6d4b\u8bd5’
为了终端调试方便,最好是打印中文。
data为组织成dict格式的数据,然后用json模块导入。如下处理后可以正常显示。
json_data = json.dumps(data, ensure_ascii=False)