Warning : "Sending 'NSObject *' to parameter of incompatible type 'id<NSCopying>'
ios, ios7, nscopying, nsdictionary, objective-c
Solution
`NSDictionary` keys should conform to `NSCopying` protocol. It is a basic requirement of a key as specified in the NSDictionary reference. In general, `NSObject` does not conform to the protocol(its subclasses might), so you are getting a warning. The correct way to do this is
NSMutableDictionary *tmpDic = [[NSMutableDictionary alloc] initWithCapacity:[m_coordDic count]];
for (NSObject<NSCopying> *key in [m_coordDic allKeys])
{
[tmpDic setObject:[m_coordDic objectForKey:key] forKey:key]; //Warning
}
return tmpDic;
This ensures your key is any object confirming to `NSCopying` protocol.
EDIT: It seems what you are really trying to do is simply `[m_coordDic mutableCopy]`, a shallow copy. Any reason you are not doing this?
Problem
I am struck in this warning for many hours... Am getting The code is, ``` -(NSMutableDictionary*)iOSDiction { NSMutableDictionary *tmpDic = [[NSMutableDictionary alloc] initWithCapacity:[m_coordDic count]]; for (NSObject *key in [m_coordDic allKeys]) { [tmpDic setObject:[m_coordDic objectForKey:key] forKey:key]; //Warning } return tmpDic; } ``` Warning : "Sending 'NSObject *' to parameter of incompatible type 'id' Passing argument to parameter `aKey` here ``` NSDictionary.h - (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey; ```