我有一个小问题,对你来说可能很容易。我正在使用核心数据。我有一个实体:Session,它有三个属性:access_token、user_id 和secret。
session .h:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface Session : NSManagedObject
@property (nonatomic) NSString * access_token;
@property (nonatomic) NSNumber * user_id;
@property (nonatomic) NSString * secret;
@end
session .m:
#import "Session.h"
@implementation Session
@dynamic access_token;
@dynamic user_id;
@dynamic secret;
@end
有一个代码,我在其中使用这个实体:
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
Session *newSession = [NSEntityDescription insertNewObjectForEntityForName:@"Session" inManagedObjectContext:managedObjectContext];
if (newSession != nil) {
NSLog(@"access_token: %@", [JSON objectForKey:@"access_token"]);
NSLog(@"user_id: %@", [JSON objectForKey:@"user_id"]);
NSLog(@"secret: %@", [JSON objectForKey:@"secret"]);
newSession.access_token = [JSON objectForKey:@"access_token"];
newSession.user_id = [JSON objectForKey:@"user_id"];
newSession.secret = [JSON objectForKey:@"secret"];
}
NSError *savingError = nil;
if ([managedObjectContext save:&savingError] == YES) {
NSLog(@"Session saved");
} else {
NSLog(@"Session not saved");
}
} failure:nil];
这段代码抛出异常:
newSession.secret = [JSON objectForKey:@"secret"];
MyProject[7678:bc03] -[Session setSecret:]: unrecognized selector sent to instance 0x4e572d0
这是 NSLog:
2012-03-25 15:17:33.987 MyProject[7730:bc03] access_token: <some_access_token>
2012-03-25 15:17:33.988 MyPriject[7730:bc03] user_id: <some_user_id>
2012-03-25 15:17:33.989 MyProject[7730:bc03] secret: <some_secret>
这是堆栈跟踪:
*** Call stack at first throw:
(
0 CoreFoundation 0x010625a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x013e6313 objc_exception_throw + 44
2 CoreFoundation 0x010640bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x00fd3966 ___forwarding___ + 966
4 CoreFoundation 0x00fd3522 _CF_forwarding_prep_0 + 50
5 MyProject 0x00004c94 __42-[APIWrapper authWithLogin:andPassword:]_block_invoke_0 + 836
6 MyProject 0x0000d452 __74+[AFJSONRequestOperation JSONRequestOperationWithRequest:success:failure:]_block_invoke_0 + 146
7 MyProject 0x0000e229 __block_global_3 + 41
8 libdispatch_sim.dylib 0x014de289 _dispatch_call_block_and_release + 16
9 libdispatch_sim.dylib 0x014e1833 _dispatch_main_queue_callback_4CF + 312
10 CoreFoundation 0x00fa1589 __CFRunLoopRun + 2521
11 CoreFoundation 0x00fa0840 CFRunLoopRunSpecific + 208
12 CoreFoundation 0x00fa0761 CFRunLoopRunInMode + 97
13 GraphicsServices 0x0153a1c4 GSEventRunModal + 217
14 GraphicsServices 0x0153a289 GSEventRun + 115
15 UIKit 0x000ebc93 UIApplicationMain + 1160
16 MyProject 0x0001b305 main + 181
17 MyProject 0x000020d5 start + 53
)
我真的不明白这里有什么问题。
最佳答案
在您的 .h 文件中,像这样定义您的属性。
@property (nonatomic,retain) NSString * access_token;
@property (nonatomic,retain) NSNumber * user_id;
@property (nonatomic,retain) NSString * secret;
然后在你的.m文件中
@synthesize access_token;
@synthesize user_id;
@synthesize secret;
基本上这会管理您的 getter 和 setter。
关于objective-c - 尝试访问特定对象属性时出现无法识别的选择器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9859792/
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信