//
// ToolManager.swift
// MovieFansDemo1
//
// Created by 余婷 on 16/9/27.
// Copyright ? 2016年 余婷. All rights reserved.
//
import UIKit
//MARK: - NSUserDefualts的Key
///當前用戶名
let UD_CurrentUserName = "UD_CurrentUserName"
///當前的登錄狀態
let UD_LoginStatus = "UD_LoginStatus"
//MARK: - 全局變量
///屏幕寬度
let Screen_W = UIScreen.mainScreen().bounds.width
///屏幕高度
let Screen_H = UIScreen.mainScreen().bounds.height
//MARK: - 接口
///熱映,參數:count(個數) page(分頁)
let Url_HotShow = "http://ting.weibo.com/movieapp/rank/hot"
///預告,count(個數) page(分頁)
let Url_Trailer = "http://ting.weibo.com/movieapp/rank/coming"
///影評,參數:count(個數) type(1->熱門影評, 0->最新影評)
let Url_FilmComment = "http://ting.weibo.com/movieapp/feed/list"
///影單,參數:count(個數) page(頁數)
let Url_FilmList = "http://ting.weibo.com/movieapp/Pagelist/recommend"
///影單每一行,參數:page count id type(recommend) POST請求
let Url_FilmListLine = "http://ting.weibo.com/movieapp/Pagelist/recommendmovie"
///電影詳情,參數:film_id(電影id)
let Url_FilmDetail = "http://ting.weibo.com/movieapp/page/base"
///演員詳情
let Url_ActorDetail = ""
///代表作品
let Url_StandWorks = ""
///搜索,參數:search_key page count,方式:POST
let Url_Search = "http://ting.weibo.com/movieapp/search/search"
///篩選,參數:country type year count page
let Url_Screen = "http://ting.weibo.com/movieapp/search/film"
///長評詳情,參數:type(long) id long_show(1)
let Url_LongReviewDetail = "http://ting.weibo.com/movieapp/feed/show"
//MARK: - 顏色的拓展
extension UIColor{
///通過0-255的RGB值去創建一個顏色對象
static func RGBColor(R:CGFloat,G:CGFloat,B:CGFloat,A:CGFloat) -> UIColor{
return UIColor.init(red: R/255, green: G/255, blue: B/255, alpha: A)
}
static func randomColor()->UIColor{
let colorValue = [(108,209,0),(255,128,0),(204,102,155),(102,255,255),(255,240,70)]
let i = Int(arc4random()%5)
let rgbValue = colorValue[i]
return self.RGBColor(CGFloat(rgbValue.0), G:CGFloat(rgbValue.1), B: CGFloat(rgbValue.2), A: 1)
}
}
//MARK: - 數據庫相關
extension ToolManager{
//數據庫的使用步驟
///創建/打開數據庫
static func openDataBase(){
let db = self.default_db
let ret = db.open()
if ret {
print("數據庫打開成功")
}else{
print("數據庫打開失敗")
}
}
///創建表
static func creatTable(tableName:String){
//0.打開數據庫
self.openDataBase()
//1.創建sql語句
let sql = "CREATE TABLE IF NOT EXISTS t_\(tableName)(id integer PRIMARY KEY AUTOINCREMENT,filmName text,imageUrl text,film_id text);"
//2.執行sql
let ret = self.default_db.executeUpdate(sql, withArgumentsInArray:[])
if ret {
print("表創建成功")
}else{
print("表創建失敗")
}
}
//3.增、刪、改、查
///插入數據
static func insertData(model:FilmDetailHeaderModel,userName:String){
//創建表
self.creatTable(userName)
//sql語句
let sql = "INSERT INTO t_\(userName)(filmName,imageUrl,film_id) VALUES (?,?,?);"
//執行sql語句
let ret = self.default_db.executeUpdate(sql, withArgumentsInArray: [model.name,model.poster_url,model.film_id])
if ret {
print("插入成功")
}else{
print("插入失敗")
}
}
///根據電影id去查詢
static func isCollectionBefor(filmId:String,userName:String)->Bool{
//打開數據庫
self.openDataBase()
self.creatTable(userName)
//查詢數據
let sql = "SELECT * FROM t_\(userName) WHERE film_id=?;"
let dataSet = self.default_db.executeQuery(sql, withArgumentsInArray: [filmId])
//只要查詢到結果,就返回true
while dataSet.next() {
return true
}
//沒有查詢到結果
return false
}
///查詢數據
static func getAllData(userName:String)->[FilmDetailHeaderModel]{
//打開數據庫
self.openDataBase()
//sql語句
let sql = "SELECT * FROM t_\(userName);"
//執行sql語句
let dataSet = self.default_db.executeQuery(sql, withArgumentsInArray: [])
//遍歷獲取結果
var retuanArray = [FilmDetailHeaderModel]()
while dataSet.next() {
//取到數據庫中的數據
let name = dataSet.objectForColumnName("filmName") as! String
let imageUrl = dataSet.objectForColumnName("imageUrl") as! String
let filmId = dataSet.objectForColumnName("film_id") as! String
//創建模型對象
let model = FilmDetailHeaderModel()
model.name = name
model.poster_url = imageUrl
model.film_id = filmId
//保存到數組中
retuanArray.append(model)
}
return retuanArray
}
}
//MARK: - 通用方法
class ToolManager: NSObject {
static let default_db = FMDatabase.init(path:NSHomeDirectory()+"/Documents/User.db")
///計算指定字符串的大小
static func calculateStringSize(str:String,maxW:CGFloat,maxH:CGFloat,fontSize:CGFloat) -> CGSize{
//1.將字符串轉換成OC的字符串
let ocStr = str as NSString
//2.計算
return ocStr.boundingRectWithSize(CGSizeMake(maxW, maxH), options: .UsesLineFragmentOrigin, attributes: [NSFontAttributeName:UIFont.systemFontOfSize(fontSize)], context: nil).size
}
///圖文混排
//NSAttributedString 富文本
static func mixImageAndText(imageName:String,text:String)->NSAttributedString{
//1.將圖片轉換成富文本
let attach = NSTextAttachment.init()
attach.image = UIImage.init(named: imageName)
let imageAttr = NSAttributedString.init(attachment: attach)
//2.將字符串轉換成富文本
let textAttr = NSAttributedString.init(string: text)
//3.將圖片富文本和文字富文本拼接成一個富文本
//a.創建一個可變的富文本對象
let mutableAttr = NSMutableAttributedString()
//b.拼接
mutableAttr.appendAttributedString(imageAttr)
mutableAttr.appendAttributedString(textAttr)
return mutableAttr
}
}
//MARK: - 時間相關
extension ToolManager{
///將時間秒轉換成00:00格式的字符串
static func transformTime(time:CGFloat)->String{
//獲取分
let minute = Int(time) / 60
var minutestr = ""
if minute<10 {
minutestr = "0\(minute)"
}else{
minutestr = "\(minute)"
}
//獲取秒
let second = Int(time)%60
var secondstr = ""
if second < 10 {
secondstr = "0\(second)"
}else{
secondstr = "\(second)"
}
return "\(minutestr):\(secondstr)"
}
///計算指定時間戳對應的時間到當前時間的時間差
static func getTimeDifference(time:NSTimeInterval)->String{
//將時間戳轉換成時間
let date = NSDate.init(timeIntervalSince1970:time)
//算指定時間到當前時間之間的差值(單位:秒)(將時間轉換成時間戳)
let currentDifference = date.timeIntervalSinceNow
//將時間差轉換成天/時/分
let currentDifference2 = -currentDifference
//天
let day = currentDifference2/60/60/24
if day >= 1 {
//約束小數點后只有0位
let dayStr = String(format: "%.0f",day)
return "\(dayStr)天前"
}
//時
let hour = currentDifference2/60/60
if hour >= 1{
let hourStr = String(format: "%.0f",hour)
return "\(hourStr)小時前"
}
//分
let minute = currentDifference2/60
if minute >= 1 {
let minuteStr = String(format: "%.0f",minute)
return "\(minuteStr)分鐘前"
}
//秒
let currentStr = String(format: "%.0f",currentDifference2)
return "\(currentStr)秒前"
}
}
//MARK: - 云存儲相關
extension ToolManager{
///將賬號和密碼存儲到云數據庫中
static func BmobUserRegister(userName:String,passWord:String,result:(Bool,String)->Void){
//確定存儲賬號和密碼對應的表名:UserInfo
//1.判斷當前賬號是否已經注冊過
let query = BmobQuery.init(className: "UserInfo")
//按照注冊的用戶名去查找是否已經注冊過
query.whereKey("userName", equalTo: userName)
query.findObjectsInBackgroundWithBlock { (allObject, error) in
//判斷查詢結構
if allObject.count == 0{
//2.在賬號沒有注冊過的前提下去保存賬號和密碼
//1.常見數據對象
let objct = BmobObject.init(className: "UserInfo")
//2.設置數據
objct.setObject(userName, forKey: "userName")
objct.setObject(passWord, forKey: "passWord")
//3.保存
objct.saveInBackgroundWithResultBlock { (ret, error) in
if ret{
result(true,"注冊成功")
}else{
result(false,"注冊失敗")
}
}
}else{
result(false,"賬號已經被注冊")
}//判斷查詢結果結束
}//查詢結束
}//函數結束
///判斷賬號密碼是否正確
static func BmobUserLogin(userName:String,passWord:String,result:(Bool,String)->Void){
//1.通過用戶名去查找數據
let query = BmobQuery.init(className: "UserInfo")
//添加約束條件
query.whereKey("userName", equalTo: userName)
//開始查找
query.findObjectsInBackgroundWithBlock { (allObjects, error) in
//判斷查詢結果
if allObjects.count == 0{
//賬號錯誤
result(false,"賬號錯誤")
}else{
//賬號正確
//a.取到唯一的賬號信息對象
let object = allObjects.first as! BmobObject
//b.取出密碼
let pass = object.objectForKey("passWord")
//c.判斷密碼是否正確
if pass as! String == passWord{
//登錄成功
result(true,"登錄成功")
}else{
//密碼錯誤
result(false,"密碼錯誤")
}
}//判斷查詢結束
}//查詢結束
}//函數結束
}
ToolManager-FMDB-時間戳-云存儲-圖文混排
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- 指示根視圖:(準備幾張圖片,把label加載在window上) CustomLable *label = [[Cu...
- 下面選了最近十年里,十位名人所做的畢業演講。那么多的故事與經歷,其實只想告訴你一件事: 面對迷茫和不確定的未來,我...