Git Product home page Git Product logo

Comments (5)

ToddKerpelman avatar ToddKerpelman commented on July 19, 2024

Hmmm... not sure about this one. For learning purposes, it's probably good for folks to understand that GAIDictionaryBuilder returns an NSMutableDictionary.

Also, I'm not sure casting it as a NSDictionary will change the fact that underneath it's still an NSMutableDict. If you add this line under your modified code...

NSLog(@"Event is mutable dictionary? %d", [event isKindOfClass:[NSMutableDictionary class]]);

you'll see that it's still considered an NSMutableDictionary by iOS.

On the other hand, if your bug is really suggesting that the API is wrong and it should be returning a dictionary instead of a mutable dict, that's another matter. :) I don't know how often we expect developers to make calls that would modify this thing after the fact...

from io2015-codelabs.

samthor avatar samthor commented on July 19, 2024

I'm going to close this one as fine. The Analytics docs (not just the codelab) suggest using NSMutableDictionary since that's the real type.

from io2015-codelabs.

ksenks avatar ksenks commented on July 19, 2024

@ToddKerpelman I don't see reasons why the code can not look like this:

NSDictionary *event =
[[[GAIDictionaryBuilder createEventWithCategory:@"Action"
action:@"Share"
label:nil
value:nil] build] copy];
[tracker send:event];

This is more understandable and safe.

from io2015-codelabs.

ToddKerpelman avatar ToddKerpelman commented on July 19, 2024

That's a fair point.

I actually think this probably points to a larger issue, which is: should this be a mutable dictionary in the first place? It all depends on whether or not the developer is ever meant to change things with it afterwards. (Or if it's a requirement from the library because it needs to somehow mutate it afterwards.) If not, maybe the right solution would be to file a bug and just have this method return an NSDictionary.

from io2015-codelabs.

ToddKerpelman avatar ToddKerpelman commented on July 19, 2024

FWIW, I'm bringing this up with the Analytics SDK team to see what they have to say.

from io2015-codelabs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.