Core Data模型中实体模型的类名必须在其前面加上应用程序名称.因此,对于名为User的实体,模型编辑器中的类名必须是MyAppName.User.这工作正常,直到我向我的项目添加第二个目标.
新项目期望实体类名称为SecondAppTargetName.User.我们如何使用相同的核心数据模型支持两个目标?我尝试使用$ {PRODUCT_NAME} .User,而不是期望它能够正常工作.它不起作用.
有关如何在目标之间共享一个核心数据模型以及满足Swift项目的需求以使PRODUCT_NAME在模型编辑器中加入类的任何想法?
编辑:从Apple文档中可以看出,在模型实体检查器中将模块名称作为类名添加前缀是首选行为.如果是这样,这似乎是一个巨大的漏洞,因为它排除了使用相同数据模型的多个目标.我还没有找到解决办法.SO上的一些帖子表明在托管对象的Swift类定义前面使用@objc(ClassName)可以解决这个问题,但我还没有能够验证.
在存档期间,Xcode 7.1确实Restkit/Restkit.h没有找到,但在调试中它成功找到了标题.这是一个不使用可可豆荚的旧项目,因此在其中手动添加RestKit.试过很多解决方案但没有成功.需要帮助.
是否可以NSString通过RestKit将JSON 反序列化为对象?我在这里检查了API列表,找不到可以用于此目的的东西.我能找到的最接近的是NSDictionary解析输入后返回的各种解析器类.我假设RestKit在下载响应后使用这些解析器,所以我的想法是RestKit中的某个功能可用,但不公开.
如果我没有遗漏任何东西并且没有公开这个功能,那么替代方案是什么?两个明显的看起来不太有希望:获得结果NSDictionary并尝试反序列化自己(有效地重新实现RestKit)或尝试深入RestKit源并查看是否可以某种方式暴露(看起来单调乏味且容易出错).
在此先感谢您的帮助.
PS:我们的想法是,反序列化对象上的字符串属性实际上是另一组对象的JSON表示(在某种意义上是嵌入式JSON),并且在运行时根据需要进行反序列化.
我正在创建一个使用restkit的IOS应用程序,我能够做GET请求没有问题,并且它正确地映射了一切但是,我无法让restkit对数据库进行POST.它正在回应说:
`{"errors":{"email":["can't be blank"],"password":["can't be blank"]}}`
Run Code Online (Sandbox Code Playgroud)
我感觉这个物体没有被发送.这是我在我的app委托中设置所有映射的代码.
RKObjectMapping *userMapping = [RKObjectMapping mappingForClass:[User class]];
RKObjectMapping *dogMapping = [RKObjectMapping mappingForClass:[Dog class]];
RKObjectMapping *posttimeMapping = [RKObjectMapping mappingForClass:[PostTime class]];
RKObjectMapping *postMapping = [RKObjectMapping mappingForClass:[Post class]];
RKObjectMapping *activityMapping = [RKObjectMapping mappingForClass:[Activity class]];
// set up which attributes go where
[userMapping addAttributeMappingsFromDictionary:[User propertyMappings]];
[dogMapping addAttributeMappingsFromDictionary:[Dog propertyMappings]];
[posttimeMapping addAttributeMappingsFromDictionary:[PostTime propertyMappings]];
[postMapping addAttributeMappingsFromDictionary:[Post propertyMappings]];
[activityMapping addAttributeMappingsFromDictionary:[Activity propertyMappings]];
// set up relationships
[userMapping addRelationshipMappingWithSourceKeyPath:@"dogs" mapping:dogMapping];
[dogMapping addRelationshipMappingWithSourceKeyPath:@"timeline" mapping:posttimeMapping];
[posttimeMapping addRelationshipMappingWithSourceKeyPath:@"posts" mapping:postMapping];
[postMapping addRelationshipMappingWithSourceKeyPath:@"activities" mapping:activityMapping];
// what to print
RKLogConfigureByName("RestKit/Network", …Run Code Online (Sandbox Code Playgroud) 只需要下载9,000个物体,RestKit的性能就会慢得令人无法接受 - 它在模拟器上花费了10分钟,在iPad Mini上花费了不确定的时间.
我有几个表,我从一个安静的界面下载.这一切都有效,但似乎存在指数尺度问题,当有许多对象时,这个问题变得无法忍受.下表遇到的问题最多:
optionMapping.identificationAttributes = @[@"optionID"];
// OptionType
RKEntityMapping *optionTypeMapping = [RKEntityMapping mappingForEntityForName:@"OptionType" inManagedObjectStore:rkMOS];
[optionTypeMapping addAttributeMappingsFromDictionary:@{
@"id" : @"optionTypeID",
@"option_type" : @"optionType",}];
optionTypeMapping.identificationAttributes = @[@"optionTypeID"];
Run Code Online (Sandbox Code Playgroud)
属性optionTypeID在Core Data中编制索引,不是可选的.
与其他表有一些关系,我将其映射如下:
// Option.optionType -> OptionType
[optionMapping addConnectionForRelationship:@"optionType" connectedBy: @"optionTypeID"];
// Option.unit -> Unit
[optionMapping addConnectionForRelationship:@"unit" connectedBy:@"unitID"];
Run Code Online (Sandbox Code Playgroud)
这些似乎不是问题 - 我评论了它们,下载仍然非常非常慢.
我设置了一个响应描述符(这是一个目录,所以我只需要下载它).请注意,以下代码显示了所有表的设置.
NSArray *reqA = @[@{@"endpoint" : API_VENDORS_ENDPOINT,
@"mapping" : vendorMapping},
@{@"endpoint" : API_OPTION_TYPES_ENDPOINT,
@"mapping" : optionTypeMapping},
@{@"endpoint" : API_OPTIONS_ENDPOINT,
@"mapping" : optionMapping},
@{@"endpoint" : API_UNITS_ENDPOINT,
@"mapping" : unitMapping},
@{@"endpoint" : API_PRICE_TIERS_ENDPOINT,
@"mapping" …Run Code Online (Sandbox Code Playgroud) 我已经花了很多时间来解决这个问题.我使用Restkit 0.9.3与Object Mapping 2.0.所有数据都是JSON.我可以正确地进行GET,POST,PUT和DELETE操作,它是我没有捕获的响应体并且正确地映射..
所以我的问题是,当出现问题时,我的restful api会返回错误.我想用restkit映射这些错误,fx返回此错误:
{"code":"401","message":"未经授权"}
如何映射这个json正确?我尝试了很多东西,可以使用一些指导 - 或者请举一个例子.
我正在使用Facebook iOS SDK,AWS iOS SDK和RestKit.为了让Facebook和AWS玩得很好(有重复的符号),我不得不将我的其他链接器标志更改为-force_load facebook-ios-sdk/lib/facebook-ios-sdk/libfacebook_ios_sdk.a.现在,当我运行我的应用程序时,我收到了与RestKit相关的错误:
2012-06-28 15:55:15.336 MyApp [1640:707] - [__ NSCFString isIPAddress]:无法识别的选择器发送到实例0x35f440
2012-06-28 15:55:15.338 MyApp [1640:707] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [__ NSCFString isIPAddress]:无法识别的选择器发送到实例0x35f440'
我无法使用-ObjC和all-load链接器标志,因为这阻止我使用Facebook和AWS构建.
有谁知道我应该如何设置我的链接器标志,以便我可以一起使用所有3(FB,AWS,RestKit)?谢谢!
当RKObjectManager中此对象的POST/PUT请求失败时,如何丢弃对NSManagedObject实例所做的CoreData更改?
NSManagedObject *object = ...;
[object setValue:@"test" forKey: @"test"];
[[RKObjectManager sharedManager] postObject:object
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { NSLog(@"success, nothing to do"); }
failure:^(RKObjectRequestOperation *operation, NSError *error) {
// I want to discard changes made to object here
}
Run Code Online (Sandbox Code Playgroud)
更新:RestKit 0.20
restkit ×10
ios ×9
core-data ×2
objective-c ×2
swift ×2
xcode ×2
afnetworking ×1
api ×1
facebook ×1
iphone ×1
json ×1
response ×1
restkit-0.20 ×1
xcode7.1 ×1