Можем ли мы использовать атрибуты setvalue и forkey для объекта класса? - PullRequest
1 голос
/ 22 июля 2011

У меня есть класс с именем "Book", и исходный код выглядит следующим образом: -

Book.h

#import <"UIKit/UIKit.h>


@interface Book : NSObject {

    NSInteger bookID;
    NSString *title;    //Same name as the Entity Name.
    NSString *author;   //Same name as the Entity Name.
    NSString *summary;  //Same name as the Entity Name.

}

@property (nonatomic, readwrite) NSInteger bookID;

@property (nonatomic, retain) NSString *title;

@property (nonatomic, retain) NSString *author;

@property (nonatomic, retain) NSString *summary;

@end

Book.m

#import "Book.h"

@implementation Book

@synthesize title, author, summary, bookID;

-(void) dealloc {

    [summary release];
    [author release];
    [title release];
    [super dealloc];
}

@end

Тогда в другом классе я могу написать: -

Book *aBook = [[Book alloc]init];
[aBook setValue:currentElementValue forKey:elementName];

Если да, то почему ??Потому что обычно setvalue и forkey используются для хранения данных в NSMutableDictionary ..

1 Ответ

0 голосов
/ 22 июля 2011

В основном кодирование Key-Value предназначено для работы со свойствами объекта. Руководство по программированию кодирования значения ключа начинается со строк,

Кодирование ключ-значение - это механизм для косвенного доступа к свойствам объекта с использованием строк для определения свойств, а не посредством вызова метода доступа или доступа к ним напрямую через переменные экземпляра. По сути, кодирование ключ-значение определяет шаблоны и сигнатуры методов, которые реализуют методы доступа вашего приложения.

Методы setObject: forKey: и removeObjectForKey: предназначены для использования со словарями. Вы также можете использовать метод setValue: forKey: для установки значений в словарь. Но вы не можете использовать setObject: forKey: метод для объектов класса.

Еще одно отличие состоит в том, что setObject: forKey: не принимает nil в качестве значения. Вместо этого вы должны использовать NSNull в качестве значения. Но setValue: forKey: принимает nil и удаляет ключ из словаря, что экономит память.

[Пожалуйста, кто-нибудь поправит меня, если я где-то ошибаюсь!]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...