标签: key-value-coding

UIScrollView不符合关键视图的键值编码

所以关注这个问题在这里,我创建了两组新的文件:

JCScrollViewController.m  
JCScrollViewController.xib

JCKeyboard.xib
Run Code Online (Sandbox Code Playgroud)

JCScrollViewController.xib我只有一个滚动视图,scrollView连接到.m文件的出口,视图插座连接到视图.在JCScrollViewController.m符合的UIScrollViewDelegate.

在我的app委托中,我这样做:

JCScrollViewController *viewController = [[JCScrollViewController alloc] init];
[window addSubview:viewController.view];
Run Code Online (Sandbox Code Playgroud)

JCScrollViewController.m我这样做-viewDidLoad:

//load your JCKeyboard.xib into a UIView object
NSArray *nibParts = [[NSBundle mainBundle] loadNibNamed:@"JCKeyboard" 
                                                  owner:nil 
                                                options:nil];
//first object is the view
UIView *keyboard = [nibParts objectAtIndex:0];

//add keyboard to scrollView 
[scrollView addSubview:keyboard];

//set content size to same dimensions as TallView.xib
scrollView.contentSize = CGSizeMake(320, 600);
Run Code Online (Sandbox Code Playgroud)

当我启动应用程序时,我收到此错误:

this class is not key value coding-compliant …
Run Code Online (Sandbox Code Playgroud)

iphone key-value-coding uiscrollview

1
推荐指数
1
解决办法
4050
查看次数

为什么在iPhone3中使用TT_RELEASE_SAFELY?

#define TT_RELEASE_SAFELY(__POINTER) { [__POINTER release]; __POINTER = nil; }
Run Code Online (Sandbox Code Playgroud)

为什么three20认为释放后将ivar指定为nil是安全的?省略这ivar = nil一步是不安全的吗?

这就是我发现的全部内容:http: //github.com/facebook/three20/commit/1b946f475fb28d60e0aafc9ef394050c642c3a5b#commitcomment-115517

我不认为我在使用KVO/KVC,但我不确定.我现在正在读它.

谢谢!

马特

iphone objective-c key-value-observing key-value-coding three20

1
推荐指数
1
解决办法
1195
查看次数

nsarray使用键值集合运算符

我刚学习收集操作员,我的第一个例子不起作用.我怎样才能解决这个问题?

NSArray *arr = [NSArray arrayWithObjects:[NSNumber numberWithInt:1], 
                [NSNumber numberWithInt:10], 
                [NSNumber numberWithInt:100], 
                [NSNumber numberWithInt:1000], 
                nil];
NSLog(@"%@", [arr valueForKeyPath:@"@min"]);
Run Code Online (Sandbox Code Playgroud)

我崩溃了:

这个类不是密钥min的密钥值编码兼容

key-value-coding ios

1
推荐指数
1
解决办法
1394
查看次数

用Swift编写的类不能是Nib Owner(Crash)

这是我想要做的:在nib文件中设计一个视图.使用Swift编写的类返回视图和nib所有者.在Swift中实例化nib的视图.崩溃的代码:

var myViewOwner: MyViewOwner?
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil) // crash
Run Code Online (Sandbox Code Playgroud)

......有错误:

[NSObject 0x7bfa0cc0 setValue:forUndefinedKey:]:此类与密钥myView不符合密钥值编码.

所以,我有:带有空白视图的nib文件,其中视图是类型的类型MyClass和nib所有者MyViewOwner.这两个类都是用Swift编写的.

我已经尝试过的(初始尝试):

我将只发布MyViewOwner类代码,因为MyView.swift只是一个类定义.

MyViewOwner.swift

class MyViewOwner {
    @IBOutlet weak var myView: MyView
}
Run Code Online (Sandbox Code Playgroud)

上面引起的错误.

NSObject的第二次尝试:

当然Swift对象不符合KVO,所以我试过:

class MyViewOwner: NSObject {
    @IBOutlet var myView: MyView
}
Run Code Online (Sandbox Code Playgroud)

......和:

class MyViewOwner: NSObject {
    @IBOutlet strong var myView: MyView = MyView() // we need to set something since it's 'strong'
}
Run Code Online (Sandbox Code Playgroud)

两者都导致错误.

使用@objc注释进行第3次尝试:

@objc class MyViewOwner: NSObject {
    @objc @IBOutlet strong var myView: MyView …
Run Code Online (Sandbox Code Playgroud)

key-value-coding nib ios swift

1
推荐指数
1
解决办法
2532
查看次数

迭代对象的属性(在 Realm 中,也可能不在)

我正在开发一个使用 Realm 作为数据库的项目(稍后会介绍)。我刚刚发现了键值编码,我想用它来将 TSV 表转换为对象属性(使用表中的列标题作为键)。现在它看起来像这样:

    let mirror = Mirror(reflecting: newSong)
    for property in mirror.children {
        if let index = headers.index(of: property.label!) {
            newSong.setValue(headers[index], forKey: property.label!)
        } else {
            propertiesWithoutHeaders.append(property.label!)
        }
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有镜像的情况下迭代属性?我真的可以发誓,我在 Realm 文档(或者甚至在 Apple 的 KVC 文档中)中读到过,您可以做类似的事情for property in Song.propertiesfor property in Song.self.properties实现同样的事情。

除了效率更高一点之外,我想这样做的主要原因是因为在同一个地方我认为我读过这篇文章,我认为他们说迭代(或 KVC?)仅适用于字符串、整数、布尔值和日期,因此它会自动跳过作为对象的属性(因为您无法以相同的方式设置它们)。上面的代码实际上是我的代码的简化,在实际版本中,我目前正在跳过这样的对象:

let propertiesToSkip = ["title", "artist", "genre"]
for property in mirror.children where !propertiesToSkip.contains(property.label!) {
...
Run Code Online (Sandbox Code Playgroud)

我想象过这.properties件事吗?或者,有没有办法以这种方式进行迭代,自动跳过对象/类而不必像我上面那样命名它们?

谢谢 :)

key-value-coding realm swift

1
推荐指数
1
解决办法
1472
查看次数

iOS Swift 3.1中setValue和myObject.propertyName有什么区别?

我有这样的对象:

class Human: NSObject {
    var name:String!
    var age:Int!
}
Run Code Online (Sandbox Code Playgroud)

并从这样的对象生成实例:

let instance = Human()  
Run Code Online (Sandbox Code Playgroud)

并设置我的值如下:

instance.name = "Kirk"
instance.age = 87
Run Code Online (Sandbox Code Playgroud)

并打印出来像这样:

print("name: \(instance.name)") // Kirk
print("age: \(instance.age)") //87
Run Code Online (Sandbox Code Playgroud)

一切都好.但是现在用另一种方式设置我的值:

instance.setValue("Kirk", forKey: "name")
instance.setValue(87, forKey: "age")
Run Code Online (Sandbox Code Playgroud)

获取Int dataType的此错误:

***由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是密钥时代的密钥值编码兼容.

为什么会这样?
以及如何解决这个问题,因为我需要使用setValue()函数.

int key-value-coding ios swift

1
推荐指数
1
解决办法
1099
查看次数

可编码结构:通过键获取值

例如,我有可编码的结构User

struct User: Codable {
    // ...
    var psnTag: String?
    var xblTag: String?
    var steamTag: String?
    var nintendoTag: String?
    var instagramId: String?
    // ...
}
Run Code Online (Sandbox Code Playgroud)

和 stringKey as String= "psnTag"

如何通过 stringKey 从实例中获取值?

像这样:

let stringKey = "psnTag"
user.hasKeyForPath(stringKey) //return Bool
user.valueForPath(stringKey) //return AnyObject
Run Code Online (Sandbox Code Playgroud)

key-value-coding swift

1
推荐指数
1
解决办法
1401
查看次数

在JavaScript中创建键/值对的列表

我需要暂时跟踪JavaScript中5个对象的状态.每个对象都有一个GUID作为其id.因此,我希望创建一个可以使用的键/值对数组.每对的关键是每个对象的id.每对的值将是一个布尔值.我的问题是,我真的不确定如何在JavaScript中执行此操作.目前,我有以下内容:

var myKeyValuePairs;

var myObjects = getMyObjects();
for (var i=0; i<myObjects.length; i++) {
  var id = myObjects[i].id;
  // What do I do now?
}
Run Code Online (Sandbox Code Playgroud)

如何在JavaScript中构建键/值对数组?

javascript key-value-coding

0
推荐指数
1
解决办法
8687
查看次数

嵌套的objectForKey调用工作,但是等效的valueForKey调用没有?

我有一个代表Flickr照片的NSDictionary.

照片的描述看起来像这样:

{
    accuracy = 16;
    context = 0;
    dateupload = 1355106635;
    description =     {
        "_content" = "Barclays Center Arena\nAtlantic Yards\nProspect Heights\nBrooklyn, New York";
    };
    farm = 9;
    "geo_is_contact" = 0;
    "geo_is_family" = 0;
    "geo_is_friend" = 0;
    "geo_is_public" = 1;
    id = 8260097924;
    isfamily = 0;
    isfriend = 0;
    ispublic = 1;
    latitude = "40.681786";
    longitude = "-73.972545";
    originalformat = jpg;
    originalsecret = cd1bdd846a;
    owner = "62968578@N07";
    ownername = atlanticyardswebcam02;
    "place_id" = "uUNC_q9TWr1vROR4wA";
    secret = 320e308baa;
    server = 8502;
    tags …
Run Code Online (Sandbox Code Playgroud)

objective-c key-value-coding ios6

0
推荐指数
1
解决办法
428
查看次数

仅包含@ ist的NSString不符合Key Value

为什么NSString @"@"不符合关键值?还有其他不符合要求的字符串吗?

您可以尝试使用此代码失败,例如:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"Some Object" forKey:@"@"];

NSString *theObject = [dict valueForKey:@"@"];
Run Code Online (Sandbox Code Playgroud)

将其设置为密钥是可以的,但不能查询该密钥.当然,您可以通过附加一些其他字符串来解决此错误,以后再删除另一个时间,例如在您想拥有密钥@时执行以下操作:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"Some Object" forKey:@"keyConst@"];

NSString *theObject = [dict valueForKey:@"keyConst@"];
Run Code Online (Sandbox Code Playgroud)

objective-c nsdictionary key-value key-value-coding ios

0
推荐指数
1
解决办法
512
查看次数

在NSObject子类上使用自动合成属性的键值编码:respondsToSelector为所有属性访问器返回NO?

我有一个NSObject带有一些属性的简单子类

@interface MyThing : NSObject
    @property (nonatomic, copy) NSString *aString;
    //... and so on
@end
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用键/值编码通过字典设置我的属性时:

+ (instancetype)thingFromDictionary:(NSDictionary *)dict
{
    MyThing *newThing = [MyThing new];
    for (NSString *key in dict)
    {
        if ([newThing respondsToSelector:@selector(key)])
        {
            //do stuff
            [newThing setValue:[dict objectForKey:key] forKey:key];
        }
        else
        {
            NSLog(@"key %@ doesnt exist. value %@", key, [dict objectForKey:key]);
        }
    }
    return newThing;
}
Run Code Online (Sandbox Code Playgroud)

事实证明,虽然字典包含与我的属性的确切名称匹配的键,但respondsToSelector:总是NO为这些键返回. 如何通过键/值方法确保可以访问所有属性?

objective-c key-value-coding ios7

0
推荐指数
1
解决办法
174
查看次数

将 Objective-C NSNumber 对象分配给 int 变量的说明?

谁能解释为什么这在 Objective-C 中有效?我希望它给出一个错误,因为一个对象被分配给一个 int 变量。我知道它确实有效,这很棒,但我想知道为什么允许这样做?

int i = [NSNumber numberWithInt:123];
Run Code Online (Sandbox Code Playgroud)

此外,这似乎存储了错误的值(即,在我的系统上,当我使用 NSLog 打印出“i”的值时,我得到的是“252711”而不是 123);但是,只有在我的主代码中声明和分配变量时。如果我将其声明为对象的实例变量,然后使用键值编码为其赋值,则它可以正常工作:

对象实例变量...

@interface myObject : NSObject
{
    int anInt;
}
Run Code Online (Sandbox Code Playgroud)

主要代码...

[myObject setValue:[NSNumber numberWithInt:123] forKey:@"anInt"];
NSLog(@"%@", [myObject valueForKey:@"anInt"]);
Run Code Online (Sandbox Code Playgroud)

这段代码按预期打印出“123”,但我不确定为什么在使用上面看似相似的方法时它无法正常工作。

objective-c instance-variables key-value key-value-coding

0
推荐指数
1
解决办法
600
查看次数

核心数据:访问属性的两种不同方式,只有一种工作方式

对于以下代码,在下面两行之前的两个注释中,只有第一个有效.

NSManagedObject * Event = [NSEntityDescription insertNewObjectForEntityForName:str inManagedObjectContext:app.managedObjectContext]; 
//Work but strange
[Event setValue:[NSNumber numberWithInt:buf4[v+h]] forKey:value]; 
 //Error
Event.value= [NSNumber numberWithInt:buf4[v+h]]; 
Run Code Online (Sandbox Code Playgroud)

第二次返回并出错

request for member 'value' in 'Event', which is of non-class type 'NSManagedObject*'
Run Code Online (Sandbox Code Playgroud)

iphone core-data key-value-coding nsmanagedobject

-1
推荐指数
1
解决办法
631
查看次数