作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Xcode 新手,正在尝试这个小程序。
// BookStoreMine.h
// BookStore
#import <Cocoa/Cocoa.h>
#import "Book.h"
@interface BookStoreMine : NSObject {
NSDictionary* mybookStore;
}
@property (retain) NSDictionary* myBookStore;
-(id)init;
-(void)printInventory;
-(BOOL)addBook:(Book *)newBook;
-(BOOL)removeBookWithTitle:(NSString *)whichTitle;
-(void)dealloc;
@end
// BookStoreMine.m
// BookStore
#import "BookStoreMine.h"
@implementation BookStoreMine
@synthesize myBookStore;
-(id)init {
self = [super init];
if (self != nil) {
myBookStore = [[NSMutableDictionary alloc] init];
}
return self;
}
-(BOOL)addBook:(Book *)newBook {
**[myBookStore setObject:newBook forKey:newBook.title];**
return YES;
}
-(BOOL) removeBookWithTitle:(NSString *)whichTitle{
if ([myBookStore objectForKey:whichTitle] != nil) {
**[myBookStore removeObjectForKey:whichTitle];**
return YES;
}
return NO;
}
-(void)printInventory{
Book *book;
for (NSString* key in myBookStore) {
book = [myBookStore objectForKey:key];
NSLog(@" Title: %@",book.title);
NSLog(@" Author: %@",book.author);
NSLog(@" Description: %@",book.description);
NSLog(@"ID is:%@",book.ID);
}
}
-(void)dealloc{
self.myBookStore = nil;
[super dealloc];
}
@end
当我在 myBookStore 上使用 setObject 方法以及在 myBookStore 对象上使用 removeObject 方法时,我会收到警告。警告是“NSDictionary 可能不会响应 setObject:forKey 或 removeObject:forKey。当我使用的对象是 NSMutableDictionary 时,为什么会收到与 NSDictionary 相关的警告?如何摆脱警告?(PS:程序编译运行没有任何问题)
最佳答案
在运行时,您将myBookStore
对象设置为NSMutableDictionary
的实例。
在编译时,它仍然被声明为NSDictionary
,它不会响应设置或删除的消息。
如果将变量声明为 NSMutableDictionary
,警告将会消失。
关于iphone - NSDictionary 可能无法响应 setObject :forKey on a NSMutableDictionary object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6656776/
我是一名优秀的程序员,十分优秀!