在oc中使用UIImagePickerController只要设置好代理、写代理方法就行了,但是在swift中编译没有什么问题,但是运行的时候会报错,选择一张图片,会显示库是私有的,不能访问,遇到这样的问题很好的解决办法就是在info.plist文件中添加Privacy - Photo Library Usage Description 和 Privacy - Camera Usage Descr
我们有时候在开发iOS的时候,涉及到跳转界面时,需要隐藏tabbar,以便我们重新定义新的。 OC版本的: //1.设置self.tabBarController.tabBar.hidden=YES; self.tabBarController.tabBar.hidden=YES; //2.如果在push跳转时需要隐藏tabBar,设置self.hidesBottomBarWhen
/*
打印json数据
*/
LJDownLoadNetImage.request("GET", url: "http://jsonplaceholder.typicode.com/users/1") { (data, respond, error) in
data转String
let str =
The as! Operator! 让我们来操作as吧! 说明 因为最近在学习Swift,这里根据苹果官方文档加上自己的理解,总结了下常用的as、as!、as? 这三种类型转换操作符的异同和使用方式。 正文 as keyword:Guaranteed conversion、 Upcasting 理解:字面理解就是有保证的转换,从派生类转换为基类的向上转型 著名代码: // 将1转成float
le
首先来说一些Swift中的Optional,译为可选项,他是一个枚举类型,有以下两个值 1. none:表示没有值 2. some:某一类值 原始可选项的定义:
1
1
let x: Optional = 10 简单的定义:
1
2
1
2
//'?'用来定义 y 是一
//避免循环引用,weak当对象销毁的时候,对象会被指定为nil
//weak var weakSelf = self //对象推到,省略了ViewController
weak var weakSelf : FirstViewController? = self //等同与上面的表达式
ljload?.loadData({ (j
//MARK: -- 根据类文件字符串转换为ViewController
extension ThirdViewController
{
/// 类文件字符串转换为ViewController
/// - Parameter childControllerName: VC的字符串
/// - Returns: ViewController
func getV
1. data 根据url这个key存储在 fetchLoads中
// A single key may have multiple callbacks. Only download once.
func setup(progressBlock: ImageDownloaderProgressBlock?, with completionHandler: ImageDownloader
ljTempModel = UserModel.init(userName: "sww", userID: 12, phone: "123", email: "deew")
ljTempModel?.ljArray.append("sww")
print("可选绑定前:\(ljTempModel?.ljArray)")
//可选绑定
//元组
//1.使用元组保存信息
let infoTuple = ("why",18,1.08)
let tupleName = infoTuple.0
let tupleAge = infoTuple.1
print(tupleName.characters.count)
//写法二//别名
let infoTuple1 = (name:"why" , age:18 ,height:1.08
//类的基本使用
//1. 创建类
class Student
{
//类的属性定义
// 存储属性: 用于存储实例的变量&常量
var name : String = ""
var age : Int = 0
var mathScore : Double = 0.0
var chineseScore : Double = 0.0
//计算
swift 中的析构函数,类似与OC中的dealloc函数,类似于c++ 中的析构函数 class deallocPerson
{
var name : String = ""
var age : Int = 0
//重写析构函数,监听对象的销毁
deinit {
print("deallocPerson ---deinit ")
//1. 可选链的使用
// ?.就是可选链,系统会自动判断可选类型是否有值
//如果有值,则解包,如果没有值,则赋值nil
//注意:可选链条获取的值,一定是一个可选类型
// if let price = p.dog?.toy?.price{
// print(price)
//}
//2. 给why的狗的玩具赋值一个新的价格
// 如果可选链中有一个可选类型是没有值,那么语句直接不执
//1. 协议的定义
protocol SportProtocol{
//默认情况下,协议中的方法都是必须实现的方法
func playBasketball()
func playFootball()
}
//2. 定义类,并且遵守协议
class teacher : SportProtocol{
func playFootball() {
pri
Swift的字符串类String ,没有像OC NSString类,有属性可以直接转换为基本数据类型,所以就总结了常用的String类转换为基本数据类型的方法 直接上码: import UIKit
class BaseTypeConvertClass: NSObject {
//简化版 CGFloat(Float(str))
open class func String
//选择排序-升序
func minMax(array: inout [Int]) {
for i in (0..<array.count){
var k = i
for j in (k+1..<array.count){
if(array[k] > array[j]){
k = j
最近在学习swift3.0 遇到了 修改函数参数时会报'xxx' is a 'let' constant的问题 解决方法就是 在函数参数中加 上inout 然后掉函数时要加上&字符,具体使用如下: func minMax(array: inout [Int]) {
for i in (0..<array.count){
var k = i
for j in
//存储图片的文件夹 var ljFilePath:String = NSHomeDirectory() + "/Documents/" + "LJImageCache/" /// 写文件
///
/// - Parameters:
/// - fileName: 文件名称
/// - data: 数据data
/// - Returns:
一. 缓存原理 图片缓存原理原理是,如内存没图片,去磁盘找,若磁盘也没有,则根据url去下载,然后缓存到内存和磁盘中,简单易用 缓存的目录结构如下图: //存储图片的文件夹 var ljFilePath:String =NSHomeDirectory() +"/Documents/"+"LJImageCache/" 二. 图片名称处理 为了确保缓存下来的图片的唯一性,所以此处采用图片
因为MD5加密是不可逆的,所以一般只有MD5加密的算法,而没有MD5解密的算法。 创建一个Sting+MD5.Swift字符串分类文件(同时此处需要创建一个bridge.h桥接文件,引入这个头文件 #import <CommonCrypto/CommonDigest.h>,md5加密方法需要使用的文件) 1.bridge.h桥接文件如下: #ifndef bridge_h
#define br