對不起,在這裏不斷提出基本問題,但我不知道還有什麼要去。用滑塊,文本字段和按鈕編寫一些代碼,用於遞增滑塊以演示鍵值編碼。一切都奏效。下一步是使用'屬性'和'合成'代替訪問器和設置器方法;屬性/合成錯誤
#import <Foundation/Foundation.h>
@interface KVCController : NSObject {
int fido;
}
@property(readwrite, assign) int fido;
@end
~~~~~
@implementation KVCController
@synthesize fido;
- (id)init{
self = [super init];
if (self) {
// Initialization code here.
[self setValue:[NSNumber numberWithInt:5] forKey:@"fido"];
NSNumber *n = [self valueForKey:@"fido"];
NSLog(@"fido = %@", n);
}
return self;
}
~~~~~~~
@end
我得到@implementation KVCController一個未完全執行錯誤。如果我把'fido'的get和set方法放在它裏面。 @synthesize fido;發生第二個錯誤。它說屬性必須在實現中聲明。正如我所知道的,所有東西都被正確地複製出書,並且看起來就像我看過的所有其他用途的財產和綜合。任何人有什麼想法,我失蹤或做錯了什麼?
Xcode 4.1自動創建一個委託類,我通常會忽略如果我不在委託上工作。我爲KVC練習創建了自己的類,並在適當修改的基礎上添加了屬性/合成聲明並獲得了錯誤信息。我只是將屬性/合成聲明放入委託類中,將我的IBAction代碼移到適當的位置,重新綁定綁定,並刪除我創建的類,並且一切正常。屬性/合成聲明是否需要像委託材料一樣處理?
另外 - 你已經聲明'fido'是一個'int',但是你正在用'NSNumber'初始化它。所有你需要做的就是編寫'fido = 5;' – Abizern
作者說鍵值編碼只對對象起作用,所以我把它留在原來的樣子。把它拿出來放入fido = 5並沒有什麼區別(仍然是相同的錯誤)。我以爲你需要KVC的財產/合成聲明。 –
您只能使用KVC設置對象的屬性。這並不意味着這些屬性本身需要成爲對象。 – Abizern