Key Value Coding Use in Swift












1















I want to know the use of KVO in swift as I read in Apple Doc or any other online articles it states that it provides indirect access to properties and addressable via string. I have a set of doubts.




  • If I can set the property directly via person.name = "John" they why to use a Set Value for key name = "John" indirectly

  • Apple doc says key-value coding compliant can participate in a wide range of Cocoa technologies like Core Data. Why it's used and not in other frameworks

  • It is used during runtime or dynamic to set value. How it is?

  • Is it TypeSafe and how?

  • Its an Objective - C feature then why still used in Swift 4 with latest improvements with ./Type.property access and set










share|improve this question























  • KVO is Key Value Observing.

    – Willeke
    Nov 21 '18 at 16:18
















1















I want to know the use of KVO in swift as I read in Apple Doc or any other online articles it states that it provides indirect access to properties and addressable via string. I have a set of doubts.




  • If I can set the property directly via person.name = "John" they why to use a Set Value for key name = "John" indirectly

  • Apple doc says key-value coding compliant can participate in a wide range of Cocoa technologies like Core Data. Why it's used and not in other frameworks

  • It is used during runtime or dynamic to set value. How it is?

  • Is it TypeSafe and how?

  • Its an Objective - C feature then why still used in Swift 4 with latest improvements with ./Type.property access and set










share|improve this question























  • KVO is Key Value Observing.

    – Willeke
    Nov 21 '18 at 16:18














1












1








1


1






I want to know the use of KVO in swift as I read in Apple Doc or any other online articles it states that it provides indirect access to properties and addressable via string. I have a set of doubts.




  • If I can set the property directly via person.name = "John" they why to use a Set Value for key name = "John" indirectly

  • Apple doc says key-value coding compliant can participate in a wide range of Cocoa technologies like Core Data. Why it's used and not in other frameworks

  • It is used during runtime or dynamic to set value. How it is?

  • Is it TypeSafe and how?

  • Its an Objective - C feature then why still used in Swift 4 with latest improvements with ./Type.property access and set










share|improve this question














I want to know the use of KVO in swift as I read in Apple Doc or any other online articles it states that it provides indirect access to properties and addressable via string. I have a set of doubts.




  • If I can set the property directly via person.name = "John" they why to use a Set Value for key name = "John" indirectly

  • Apple doc says key-value coding compliant can participate in a wide range of Cocoa technologies like Core Data. Why it's used and not in other frameworks

  • It is used during runtime or dynamic to set value. How it is?

  • Is it TypeSafe and how?

  • Its an Objective - C feature then why still used in Swift 4 with latest improvements with ./Type.property access and set







swift key-value-observing key-value-coding






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 21 '18 at 7:28









salman siddiquisalman siddiqui

203316




203316













  • KVO is Key Value Observing.

    – Willeke
    Nov 21 '18 at 16:18



















  • KVO is Key Value Observing.

    – Willeke
    Nov 21 '18 at 16:18

















KVO is Key Value Observing.

– Willeke
Nov 21 '18 at 16:18





KVO is Key Value Observing.

– Willeke
Nov 21 '18 at 16:18












1 Answer
1






active

oldest

votes


















2















If I can set the property directly via person.name = "John" they why
to use a Set Value for key name = "John" indirectly




Please read “What is the point of key-value coding?”






Apple doc says
key-value coding compliant can participate in a wide range of Cocoa
technologies like Core Data. Why it's used and not in other frameworks




It's used where appropriate. It's used where it is helpful and the performance is acceptable. If it's not useful, or if its performance is too low, it's not used.






It is used during runtime or dynamic to set value. How it is?




Key-Value Coding uses the Objective-C runtime to look up getter and setter methods, and to find the types and locations of instance variables if the setters don't exist. See Friday Q&A 2013-02-08: Let's Build Key-Value Coding for a detailed analysis.



Apple documentation briefly describes the implementation of Key-Value Observing here. It's short enough to quote entirely:




Automatic key-value observing is implemented using a technique called
isa-swizzling.



The isa pointer, as the name suggests, points to the object's class
which maintains a dispatch table. This dispatch table essentially
contains pointers to the methods the class implements, among other
data.



When an observer is registered for an attribute of an object the isa
pointer of the observed object is modified, pointing to an
intermediate class rather than at the true class. As a result the
value of the isa pointer does not necessarily reflect the actual class
of the instance.



You should never rely on the isa pointer to determine class
membership. Instead, you should use the class method to determine the
class of an object instance.




Mike Ash gave a more detailed analysis in Friday Q&A 2009-01-23.






Is it
TypeSafe and how?




It's not particularly type safe. For example, it doesn't stop you from storing a UIView in a property that's declared as NSString, or vice versa.




Its an Objective - C feature then why still used in
Swift 4 with latest improvements with ./Type.property access and set




It's still used because most of Apple's SDK is still implemented in Objective-C, and because it lets you do things that you cannot do in Swift without much more “boilerplate” (manual, repetitive functions). The trade-off is that Objective-C is lower performance. In many, many cases, the lower performance of Objective-C (compared to Swift) is not a significant problem, and the increased dynamism is very helpful.






share|improve this answer
























  • Just an addition: My library EVReflection would be impossible without KVC (Or you would need code generation like the Codable protocol does) For more info see github.com/evermeer/EVReflection

    – Edwin Vermeer
    Nov 21 '18 at 9:55











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53407131%2fkey-value-coding-use-in-swift%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









2















If I can set the property directly via person.name = "John" they why
to use a Set Value for key name = "John" indirectly




Please read “What is the point of key-value coding?”






Apple doc says
key-value coding compliant can participate in a wide range of Cocoa
technologies like Core Data. Why it's used and not in other frameworks




It's used where appropriate. It's used where it is helpful and the performance is acceptable. If it's not useful, or if its performance is too low, it's not used.






It is used during runtime or dynamic to set value. How it is?




Key-Value Coding uses the Objective-C runtime to look up getter and setter methods, and to find the types and locations of instance variables if the setters don't exist. See Friday Q&A 2013-02-08: Let's Build Key-Value Coding for a detailed analysis.



Apple documentation briefly describes the implementation of Key-Value Observing here. It's short enough to quote entirely:




Automatic key-value observing is implemented using a technique called
isa-swizzling.



The isa pointer, as the name suggests, points to the object's class
which maintains a dispatch table. This dispatch table essentially
contains pointers to the methods the class implements, among other
data.



When an observer is registered for an attribute of an object the isa
pointer of the observed object is modified, pointing to an
intermediate class rather than at the true class. As a result the
value of the isa pointer does not necessarily reflect the actual class
of the instance.



You should never rely on the isa pointer to determine class
membership. Instead, you should use the class method to determine the
class of an object instance.




Mike Ash gave a more detailed analysis in Friday Q&A 2009-01-23.






Is it
TypeSafe and how?




It's not particularly type safe. For example, it doesn't stop you from storing a UIView in a property that's declared as NSString, or vice versa.




Its an Objective - C feature then why still used in
Swift 4 with latest improvements with ./Type.property access and set




It's still used because most of Apple's SDK is still implemented in Objective-C, and because it lets you do things that you cannot do in Swift without much more “boilerplate” (manual, repetitive functions). The trade-off is that Objective-C is lower performance. In many, many cases, the lower performance of Objective-C (compared to Swift) is not a significant problem, and the increased dynamism is very helpful.






share|improve this answer
























  • Just an addition: My library EVReflection would be impossible without KVC (Or you would need code generation like the Codable protocol does) For more info see github.com/evermeer/EVReflection

    – Edwin Vermeer
    Nov 21 '18 at 9:55
















2















If I can set the property directly via person.name = "John" they why
to use a Set Value for key name = "John" indirectly




Please read “What is the point of key-value coding?”






Apple doc says
key-value coding compliant can participate in a wide range of Cocoa
technologies like Core Data. Why it's used and not in other frameworks




It's used where appropriate. It's used where it is helpful and the performance is acceptable. If it's not useful, or if its performance is too low, it's not used.






It is used during runtime or dynamic to set value. How it is?




Key-Value Coding uses the Objective-C runtime to look up getter and setter methods, and to find the types and locations of instance variables if the setters don't exist. See Friday Q&A 2013-02-08: Let's Build Key-Value Coding for a detailed analysis.



Apple documentation briefly describes the implementation of Key-Value Observing here. It's short enough to quote entirely:




Automatic key-value observing is implemented using a technique called
isa-swizzling.



The isa pointer, as the name suggests, points to the object's class
which maintains a dispatch table. This dispatch table essentially
contains pointers to the methods the class implements, among other
data.



When an observer is registered for an attribute of an object the isa
pointer of the observed object is modified, pointing to an
intermediate class rather than at the true class. As a result the
value of the isa pointer does not necessarily reflect the actual class
of the instance.



You should never rely on the isa pointer to determine class
membership. Instead, you should use the class method to determine the
class of an object instance.




Mike Ash gave a more detailed analysis in Friday Q&A 2009-01-23.






Is it
TypeSafe and how?




It's not particularly type safe. For example, it doesn't stop you from storing a UIView in a property that's declared as NSString, or vice versa.




Its an Objective - C feature then why still used in
Swift 4 with latest improvements with ./Type.property access and set




It's still used because most of Apple's SDK is still implemented in Objective-C, and because it lets you do things that you cannot do in Swift without much more “boilerplate” (manual, repetitive functions). The trade-off is that Objective-C is lower performance. In many, many cases, the lower performance of Objective-C (compared to Swift) is not a significant problem, and the increased dynamism is very helpful.






share|improve this answer
























  • Just an addition: My library EVReflection would be impossible without KVC (Or you would need code generation like the Codable protocol does) For more info see github.com/evermeer/EVReflection

    – Edwin Vermeer
    Nov 21 '18 at 9:55














2












2








2








If I can set the property directly via person.name = "John" they why
to use a Set Value for key name = "John" indirectly




Please read “What is the point of key-value coding?”






Apple doc says
key-value coding compliant can participate in a wide range of Cocoa
technologies like Core Data. Why it's used and not in other frameworks




It's used where appropriate. It's used where it is helpful and the performance is acceptable. If it's not useful, or if its performance is too low, it's not used.






It is used during runtime or dynamic to set value. How it is?




Key-Value Coding uses the Objective-C runtime to look up getter and setter methods, and to find the types and locations of instance variables if the setters don't exist. See Friday Q&A 2013-02-08: Let's Build Key-Value Coding for a detailed analysis.



Apple documentation briefly describes the implementation of Key-Value Observing here. It's short enough to quote entirely:




Automatic key-value observing is implemented using a technique called
isa-swizzling.



The isa pointer, as the name suggests, points to the object's class
which maintains a dispatch table. This dispatch table essentially
contains pointers to the methods the class implements, among other
data.



When an observer is registered for an attribute of an object the isa
pointer of the observed object is modified, pointing to an
intermediate class rather than at the true class. As a result the
value of the isa pointer does not necessarily reflect the actual class
of the instance.



You should never rely on the isa pointer to determine class
membership. Instead, you should use the class method to determine the
class of an object instance.




Mike Ash gave a more detailed analysis in Friday Q&A 2009-01-23.






Is it
TypeSafe and how?




It's not particularly type safe. For example, it doesn't stop you from storing a UIView in a property that's declared as NSString, or vice versa.




Its an Objective - C feature then why still used in
Swift 4 with latest improvements with ./Type.property access and set




It's still used because most of Apple's SDK is still implemented in Objective-C, and because it lets you do things that you cannot do in Swift without much more “boilerplate” (manual, repetitive functions). The trade-off is that Objective-C is lower performance. In many, many cases, the lower performance of Objective-C (compared to Swift) is not a significant problem, and the increased dynamism is very helpful.






share|improve this answer














If I can set the property directly via person.name = "John" they why
to use a Set Value for key name = "John" indirectly




Please read “What is the point of key-value coding?”






Apple doc says
key-value coding compliant can participate in a wide range of Cocoa
technologies like Core Data. Why it's used and not in other frameworks




It's used where appropriate. It's used where it is helpful and the performance is acceptable. If it's not useful, or if its performance is too low, it's not used.






It is used during runtime or dynamic to set value. How it is?




Key-Value Coding uses the Objective-C runtime to look up getter and setter methods, and to find the types and locations of instance variables if the setters don't exist. See Friday Q&A 2013-02-08: Let's Build Key-Value Coding for a detailed analysis.



Apple documentation briefly describes the implementation of Key-Value Observing here. It's short enough to quote entirely:




Automatic key-value observing is implemented using a technique called
isa-swizzling.



The isa pointer, as the name suggests, points to the object's class
which maintains a dispatch table. This dispatch table essentially
contains pointers to the methods the class implements, among other
data.



When an observer is registered for an attribute of an object the isa
pointer of the observed object is modified, pointing to an
intermediate class rather than at the true class. As a result the
value of the isa pointer does not necessarily reflect the actual class
of the instance.



You should never rely on the isa pointer to determine class
membership. Instead, you should use the class method to determine the
class of an object instance.




Mike Ash gave a more detailed analysis in Friday Q&A 2009-01-23.






Is it
TypeSafe and how?




It's not particularly type safe. For example, it doesn't stop you from storing a UIView in a property that's declared as NSString, or vice versa.




Its an Objective - C feature then why still used in
Swift 4 with latest improvements with ./Type.property access and set




It's still used because most of Apple's SDK is still implemented in Objective-C, and because it lets you do things that you cannot do in Swift without much more “boilerplate” (manual, repetitive functions). The trade-off is that Objective-C is lower performance. In many, many cases, the lower performance of Objective-C (compared to Swift) is not a significant problem, and the increased dynamism is very helpful.







share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 21 '18 at 8:20









rob mayoffrob mayoff

293k41592641




293k41592641













  • Just an addition: My library EVReflection would be impossible without KVC (Or you would need code generation like the Codable protocol does) For more info see github.com/evermeer/EVReflection

    – Edwin Vermeer
    Nov 21 '18 at 9:55



















  • Just an addition: My library EVReflection would be impossible without KVC (Or you would need code generation like the Codable protocol does) For more info see github.com/evermeer/EVReflection

    – Edwin Vermeer
    Nov 21 '18 at 9:55

















Just an addition: My library EVReflection would be impossible without KVC (Or you would need code generation like the Codable protocol does) For more info see github.com/evermeer/EVReflection

– Edwin Vermeer
Nov 21 '18 at 9:55





Just an addition: My library EVReflection would be impossible without KVC (Or you would need code generation like the Codable protocol does) For more info see github.com/evermeer/EVReflection

– Edwin Vermeer
Nov 21 '18 at 9:55


















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53407131%2fkey-value-coding-use-in-swift%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith