日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Plist文件和字典转模型

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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
如果bundle mainbundle的參數是nil,默認去mainbundle中找 NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil option:nil];     方法2 UINib*nib = [UINib nibWithNibName:@"xib文件名" bundle:nil]; NSArray *views = [nib instantiateWithOwner:nil option:nil];
  • 步驟
    • 新建自定義控件類
    • 新建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文件和字典转模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。