我再一次阅读了Apple开发人员Core Data文档,发现它在创建SQLLite实体时缺少图形Xcode 4编辑器,就像我在Xcode 3中分离IB时所发现的那样.
三张桌子:
CrossReference具有ZipData和LocationData的主键,因此我只需要查询CrossReference以获取位置的所有拉链或拉链的所有位置.这当然意味着ZipData和LocationData上的多对多关系(也许还有CrossReference?).
我所拥有的(不起作用)关系是这样的:
我还没有将任何实体子类化为NSManagedObjects.我只是在viewDidLoad方法中执行下面的代码,只是为了看看我的设置是否有效.
// test/learn the core data frame work
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *locationData = [NSEntityDescription
insertNewObjectForEntityForName:@"LocationData"
inManagedObjectContext:context];
[locationData setValue:@"Testville" forKey:@"City"];
[locationData setValue:@"United Tests" forKey:@"Country"];
[locationData setValue:@"County of Test" forKey:@"County"];
NSManagedObject *zipCodeData = [NSEntityDescription
insertNewObjectForEntityForName:@"ZipCodeData"
inManagedObjectContext:context];
[zipCodeData setValue:[NSNumber numberWithDouble:1111.00] forKey:@"Income"];
[zipCodeData setValue:[NSNumber numberWithDouble:22.00] forKey:@"LandArea"];
[zipCodeData setValue:@"23060" forKey:@"ZipCode"];
NSError *error;
if (![context save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; …Run Code Online (Sandbox Code Playgroud) 我一直试图让clang的分析工具正常工作,但我不知道如何在运行它时克服一个特定的错误.我已经安装了X-Code 4.0和iOS 5,我得到的输出是:
启动/Users//Desktop/HomeWork2/tools/AnalysisTool.app/Contents/Resources/llvm/utils/scan-build with arguments :(
"-o",
"/Users/<homedir>/Development/myApp/Static analysis/results",
"-v",
"--status-bugs",
"-checker-cfref",
"-warn-dead-stores",
"-warn-objc-methodsigs",
"-warn-objc-missing-dealloc",
"-warn-objc-unused-ivars",
"-analysistool-checker-access-control",
"-analysistool-checker-coersions",
"-analysistool-checker-cyclomatic-complexity",
"-analysistool-checker-conditional-logical-complexity",
"-analysistool-checker-conditional-nesting-depth",
"-analysistool-checker-loop-nesting-depth",
"-analysistool-checker-dealloc-safety",
"-analysistool-checker-declaration-conventions",
"-analysistool-checker-discouraged-method-calls",
"-analysistool-checker-error-handling",
"-analysistool-checker-extra-parentheses",
"-analysistool-checker-finalize",
"-analysistool-checker-format-strings",
"-analysistool-checker-kvo",
"-analysistool-checker-memory-management",
"-analysistool-checker-naming-conventions",
"-analysistool-checker-shadow",
"-analysistool-checker-unused-ivars",
"--use-cc=/Developer/usr/bin/llvm-gcc-4.2",
"--use-c++=/Developer/usr/bin/llvm-g++-4.2",
"-generate-class-dependency-graph",
xcodebuild,
"CONFIGURATION_BUILD_DIR=/Users/<homedir>/Development/myApp/Static analysis/build",
"CONFIGURATION_TEMP_DIR=/Users/<homedir>/Development/myApp/Static analysis/build",
"-configuration",
Debug,
clean,
build
Run Code Online (Sandbox Code Playgroud)
).
scan-build:将此运行的报告发送到'/ Users // Development/AMMO_SVN_Projects/MobXpo/branches/MobXpo_v12/Static analysis/results/2011-06-30-8'.
scan-build:在'/Users//Desktop/SWEN_646/HW2/tools/AnalysisTool.app/Contents/Resources/llvm/utils/libexec'中找不到'clang-cc'可执行文件.
scan-build:使用路径中的'clang-cc'.
xcodebuild:错误:无效选项'-nodistribute'
用法:xcodebuild [-project] [[-target] ... | -alltargets] [-configuration] [-arch] ... [-sdk [|]] [=] ... [] ... xcodebuild - workspace -scheme [-configuration] [-arch] ... [-sdk …
我的根模型的m文件中有以下代码:
-(id)init {
if(self == [super init]) {
self.rPrices = [[NSMutableArray alloc]init];
self.rPrices = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
}
return self;
}
-(void)saveData:(NSMutableData *)data toFile:(NSString *)file {
float nR4;
nR4 = (some calculations ......)
[self.rPrices addObject:[[NSNumber alloc] numberWithFloat:nR4]];
}
Run Code Online (Sandbox Code Playgroud)
当我尝试添加对象时出现以下错误: 由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [NSPlaceholderNumber numberWithFloat:]:发送到实例的无法识别的选择器
谢谢
所以在viewdidload我有
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
Run Code Online (Sandbox Code Playgroud)
为了iAd的旗帜.我为iOS 4.2 +构建调试器控制台告诉我:
不推荐使用ADBannerView:ADBannerContentSizeIdentifier320x50,请改用ADBannerContentSizeIdentifierPortrait
所以我做:
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
Run Code Online (Sandbox Code Playgroud)
并在4.1和更低的应用程序崩溃告诉我EXC_BAD_ACCESS.
我不知道要采取哪一个,但320x50的版本适用于较新版本,但我从控制台获得了通知/错误.有什么建议?
嘿家伙我使用上面的方法,如:
string = [array componentsJoinedByString:@"\n"];
Run Code Online (Sandbox Code Playgroud)
这打印出我的数组中的每个obj,但它打印出来的是:
{
Selected = 0;
name = "boots";
number = 69;
}
{
Selected = 0;
name = house;
number = 1001;
}
}
Selected = 0;
name = shirt;
number = 1234;
}
{
Selected = 0;
name = Brewski;
number = 4567;
}
and i just want it to print out:
Brewski
Boots...
etc..
Run Code Online (Sandbox Code Playgroud) 为什么这段代码不能访问'borderWidth'(附加iphone代码)
这是基于一个简单的测试项目,但我确实添加了QuartzCore框架,但这没有帮助.仍在抛出错误,请参阅下面的代码.另一个项目,我这样做它工作正常,我看不出差异
#import "Customview.h"
@implementation Customview
- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
// UI Layout
self.layer.borderWidth = 5; // ERROR error: accessing unknown 'borderWidth' component of a property
}
return self;
}
Run Code Online (Sandbox Code Playgroud) 我有一个cpp静态库,并尝试将其包装在一个静态的obj-c库中,以便它从外部看起来像一个普通的obj-c lib.我的obj-c lib编译得很好,但是当我尝试在App中使用这个lib时,我得到以下链接器错误:
Apple Mach-O Linker (Id) Error
Undefined symbols for architecture i386:
"operator new(unsigned long)", referenced from:
...
Run Code Online (Sandbox Code Playgroud)
所有libs都可以在每个需要的架构中编译好.
我的包装器lib看起来像这样:
ObjcLib.h
@interface ObjcLib: NSObject{
}
- (void) doSomething:(NSString*)text;
@end
Run Code Online (Sandbox Code Playgroud)
ObjcLib.mm
#import "ObjcLib.h"
#import "apiFromCppLib.h"
@interface ObjcLib (){
@private
cppApiNamespace::BaseApi* api;
}
@end
@implementation ObjcLib
- (void) doSomething:(NSString*)text{
api = new cppApiNamespace::BaseAPI();
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我在Link Binary With Libraries下添加了ObjcLib.a.库搜索路径也是正确的,但是当我尝试用[ObjcLib alloc]创建一个对象时,我得到了上面提到的链接器错误.我正在使用XCode4和LLVM编译器3.0
希望任何人都可以给我一个提示可能是错误的提示,或者我的包装是否正确.
编辑:在应用程序的构建设置中添加-lstdc ++作为其他链接器标志解决了许多链接器错误,但不是全部.解决的问题是ObjcLib.h和ObjcLib.mm中的cpp命令.保留的是来自BaseAPI的一些方法调用.我们将仔细研究一下这个方法调用与正确链接的其他方法的不同之处.
当使用Clang静态分析器分析iOS的Objective-C代码时,我会遇到很多"潜在泄漏".许多漏洞让我想知道为什么它是错误的.让我特别疑惑的一个例子如下:
我有一个类型的类变量NSDictionary,用于存储一些设置.现在当我有一个方法来改变字典里面的东西时:
- (void) loadPassengerCompartiments {
NSMutableArray *paxCompartiments = [self.outputTable objectAtIndex:2];
NSArray *paxCompSrc = [self.values objectForKey:@"PassengerCompartiments"];
for(MassPerson *passenger in paxCompSrc) {
=> [paxCompartiments addObject:[[PaxCompartimentOutputField alloc] initWithPerson:passenger]];
}
}
Run Code Online (Sandbox Code Playgroud)
Clang错误的在线分配和直接关联PaxCompartimentOutputField.在仪器中运行此代码时,它不会泄漏.
我能想出解决这个问题的两种方法是:
autorelease(码)
PaxCompartimentOutputField *field = [[PaxCompartimentOutputField alloc] initWithPerson:passenger];
[paxCompartiments addObject:field];
[field release];
Run Code Online (Sandbox Code Playgroud)
第一个选项是过时的imho(尤其是在iOS上,它的使用是不鼓励的)第二个选项非常笨重 - 特别是在创建一个包含更多对象的数组时(比如10个对象加载默认设置).
我不想忽视Clang的警告,因为它是查找错误和泄漏的绝佳工具.对于这些案例,在Objective-C中执行此操作的"正确"方法是什么?
我从App(le)商店下载了XCode 4并开始安装.大约一会儿 3/4的安装过程,安装警报告诉关闭iTunes.但iTunes没有运行,我在安装新的(!)OS X 10.7之前从未运行过.单击此警报中的缩放图标时,将打开iTunes.关闭它不会改变任何东西 - 安装不会继续.重新启动也没有帮助.我还能尝试什么?
首先,道歉,因为我是git,ssh和Xcode的新手.而且,我是一个相当命令行的恐惧症.
我们有一台服务器正在运行,客户端使用ssh身份验证pull/push代码连接到/.对于我使用git命令行设置的现有项目,它在Xcode 4中运行得非常好.使用Xcode 4和推送提交从那里克隆项目非常简单.
我感到困惑的是如何将我们的服务器设置为开发人员使用Xcode 4创建的本地git项目的原点/主服务器(具有大量的签入历史记录).我看到有一个隐藏的.git文件夹,所以我试过:
scp -r .git git@my.server.com:MyProject.git
然后从Xcode 4开始,我可以完全从我们的服务器中克隆它.我可以看到完整的签到历史.如果我尝试推送更改,我收到一个巨大的错误消息.
remote:错误:拒绝更新签出分支:refs/heads/master
remote:错误:默认情况下,更新非裸存储库中的当前分支
:错误:被拒绝,因为它会使索引和工作树不一致
remote:错误:你推了什么,并且需要'git reset --hard'来匹配
remote:错误:工作树到HEAD.
remote:错误:您可以将'receive.denyCurrentBranch'配置变量设置为
remote:错误:远程存储库中的'ignore'或'warn'允许推送到
remote:error:当前分支; 但是,除非你是
远程的,否则不建议这样做:错误:安排更新其工作树以匹配你在某个
远程推送的内容:错误:其他方式.
remote:error:
remote:error:要压制此消息并仍然保持默认行为,请将
remote:error:'receive.denyCurrentBranch'配置变量设置为'拒绝'.[剪断]
我不知道如何正确地做到这一点而不会失去开发人员已经拥有的本地机器上的宝贵签到历史.
有人能指出我缺少的基本步骤或概念吗?
谢谢!