Plist文件和字典转模型
生活随笔
收集整理的這篇文章主要介紹了
Plist文件和字典转模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
模型與字典
1. 用模型取代字典的好處
- 使用字典的壞處
- 編譯器沒有自動提醒的功能,需要手敲
- key如果寫錯了編譯器也不會報錯
2. 模型概念
- 概念
- 專門用來存放數據的對象
- 特點
- 一般繼承自NSObject
- 在.h文件中聲明一些用來存放數據的屬性
- 注釋
- //單行注釋
- /?/多行注釋
- /*?/文檔注釋,調用屬性時會顯示出來文檔注釋
- 使用模型的好處
- 模型設置數據和取出數據都是通過它的屬性,屬性名如果寫錯了,編譯器會馬上報錯,因此,保證了數據的正確性
- 使用模型訪問屬性的時候,編譯器會提供一系列的提示,提高編碼效率
3. 九空格
- 創建步驟
- 商品
- 懶加載
- 創建一個可變數組
- 獲取plist的全路徑
- 獲取plist中的字典數據
- 將字典數組轉換成模型數組
- 將模型數組添加到模型數組中
- 添加
- 總列數
- 獲取當前商品的索引
- 設置商品的寬度和高度
- 設置商品的位置
- 創建一個父控件
- 將父控件添加到大的View中
- 添加一個圖片
- 添加文字
- 設置數據
- 設置按鈕的狀態
- 刪除
- 設置按鈕的狀態
- [self.shopsView.subviews.lastObject removeFromSuperview];//刪除最后一個元素
- 商品
4. @property的使用策略
- assign
- 基本數據類型,枚舉,結構體等非OC對象類型
- weak
- OC對象類型(比如NSArray,NSDate,NSNumber,模型類)
- 一般使用在UI控件上
- strong
- OC對象類型(比如NSArray,NSDate,NSNumber,模型類)
- 一個對象只要有強引用引用著,就不會被銷毀
- copy
- 一般用在NSString / block上
5. 通過純代碼創建自定義控件
- 繼承自系統自帶的控件,寫一個屬于自己的控件
- 目的:封裝控件內部的細節
- 步驟
- 新建一個繼承UIView的類
- 在initWithFrame方法中添加子控件
- init內部會自動調用initWithFrame方法
- 因此應該重寫initWithFrame方法
- 在layoutSubViews(子控件布局)中設置子控件的frame
- 當空間的尺寸發生改變時就會調用layoutSubViews
- 一定要先調用[super layoutSubViews];
- 提供一個模型屬性,重寫模型屬性的set方法
- 在set方法中取出模型屬性,給對應的子控件賦值
6. 通過Xib自定義控件
-
步驟
- 新建一個繼承UIView的類
- 新建一個xib文件(文件名最好跟控件類名一樣)
- 添加子控件
- 設置子控件的屬性
- 修改最外面的控件class為控件的類名
- 將子控件進行連線
- 提供模型屬性,重寫模型的set方法
- 在set方法中給子控件設置數據
-
xib文件編譯成功后就是nib文件
- 加載方式
- 方法1
- 步驟
- 新建自定義控件類
- 新建Xib文件
- 修改xib中view的類名(只能修改成同類型的類)
- 封裝xib的加載過程
- 拖線
- 增加模型屬性,在模型屬性的set方法中設置數據到子控件上
- xib和storyboard對比
- 共同點:
- 都用來描述軟件界面
- 都用Interface Builder工具來編輯
- 本質都是轉換成代碼去創建控件
- 不同點
- Xib是輕量級的,用來描述局部的UI界面 S toryboard是重量級的,用來描述整個軟件的多個界面,并且能展示多個界面之間的跳轉關系
- 共同點:
6. 知識點
- 如果這個控件不是通過xib\storyboard創建,初始化時會調用initWithFrame:(CGRect)frame;
- 如果是通過xib\storyboard創建,初始化時會調用initWithCoder:(NSCoder *)aDecoder;
- 如果是通過xib\storyboard創建,初始化完畢后會調用awarkFromNib
- Xib與storyboard對比
7. 類前綴
- NS --> Next Step
- UI --> User Interface
- AV --> Audio Player
plist文件
- 一般可以使用屬性列表文件存儲NSArray或者NSDictionary之類的數據,這種“屬性列表文件”的擴展名是plist,因此也稱為“plist文件”
1.解析Plist文件
- 下來通過代碼來解析Plist文件中的數據
- 獲得Plist文件的全路徑 NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:@"shops" ofType:@"plist"];
- 加載plist文件? objc _shops = [NSArray arrayWithContentsOfFile:path];
2.使用注意
-
plist的文件名不能叫做“info”、“Info”之類的
-
添加plist等文件資源的時候,一定要勾選Destination:copy items if needed/Added folders:Create groups/Add to targets:非test項目
轉載于:https://www.cnblogs.com/HMJ-29/p/4758657.html
總結
以上是生活随笔為你收集整理的Plist文件和字典转模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓APP_ 布局(8) —— 基于 R
- 下一篇: Win8 64位 安装 Delphi5