gpt4 book ai didi

objective-c - 在数组上使用 KVC 的 @count 会引发数组中的类的异常

转载 作者:行者123 更新时间:2023-12-03 17:13:17 26 4
gpt4 key购买 nike

所以,我有这个:

@interface Foo
@property(nonatomic, readonly, retain) NSArray* bars;
@end

@implementation Foo
@synthesize bars = _bars;
// ... more stuff here ...
@end

因此,FooBar 的实例填充 bars,并且 Foo 的实例位于容器中目的。然后我说:

[container valueForKeyPath:@"foo.bars.@count"]

我希望给我一个漂亮的盒装号码。然而我却得到:

Exception: [<Bar 0xc175b70> valueForUndefinedKey:]: this class is not key value coding-compliant for the key bars.

那么,为什么呢?我不希望在 Bar 上实现任何特殊的东西才能使 BarNSArray 可计数,但这就是这个错误消息的含义暗示着。该文档只有一些简单的示例,但我希望它能以相同的方式工作。

最佳答案

我的代码与你的有何不同?因为这有效...

//  Foo.h
#import <Foundation/Foundation.h>

@interface Foo : NSObject
@property(nonatomic, readonly, retain) NSArray* bars;
@end


// Foo.m
#import "Foo.h"

@interface Foo ()
// extended property decl here, to be readable, but this didn't seem to matter in my test
@property(nonatomic, retain) NSArray* bars;
@end


@implementation Foo

- (id)init {

self = [super init];
if (self) {
_bars = [NSArray arrayWithObjects:@"bar one", @"bar none", nil];
}
return self;
}

@end

然后,在我的容器类中:

// .h
@property (strong, nonatomic) Foo *foo;

// .m
_foo = [[Foo alloc] init];
NSNumber *c = [self valueForKeyPath:@"foo.bars.@count"];
NSLog(@"count is %@", c);

日志=>“计数为2”

关于objective-c - 在数组上使用 KVC 的 @count 会引发数组中的类的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com