首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 運行時動態訪問屬性:使用 KVC 替代 for 循環拼接變量名

     編輯:程式設計綜合問答

錯誤嘗試

for(int i = 0; i <= 3; i++) {
    lblTeamName(i).text = @"something"; // 編譯錯誤:無法動態構造變量名
}

正確做法:KVC (Key-Value Coding)

for (int i = 1; i <= 3; i++) {
    NSString *key = [NSString stringWithFormat:@"lblTeamName%d", i];
    UILabel *label = [self valueForKey:key]; // 運行時通過字符串鍵訪問屬性
    label.text = @"something";
}

前提條件

  • 屬性必須聲明為 @property 並生成實例變量(或手動實現 valueForKey:)。
  • 屬性名稱需與字符串完全一致(區分大小寫)。

替代方案:IBOutletCollection

@property (nonatomic, strong) IBOutletCollection(UILabel) NSArray *teamLabels;

// 在 Interface Builder 中將多個 Label 連接到此集合
for (UILabel *label in self.teamLabels) {
    label.text = @"something";
}

此方式**編譯期類型安全**,無需字符串拼接,推薦用於 Interface Builder 佈局場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved