我需要创建一个包含6条记录的xml .plist,其中记录5是来自用户的输入字符串,其余的都是固定数据.我不确定这样做的最佳方法是什么?看起来它应该很简单,但我没有取得多大成功.
需要编写的数据如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AREA51</key>
<dict>
<key>ORIGIN</key>
<data>M45</data>
...(4 more records)...
(USER STRING)
...(1 more record)...
</dict>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
我尝试过一些例子,但我认为它们已经过时而且不符合规范.谢谢!
我有一个NSDocument类,我需要访问主菜单窗口,这是一个在应用程序启动时打开的窗口.当我从应用程序在该窗口中操作时似乎都工作,但是当尝试从readFromFileWrapper:ofType:error:
窗口执行相同的操作时,我访问似乎是零.为什么会这样?
- (BOOL)readFromFileWrapper:(NSFileWrapper *)fileWrapper ofType:(NSString *)typeName error:(NSError **)outError
{
if([[NSFileManager alloc] fileExistsAtPath:[NSString stringWithFormat:@"%@/Project.plist",[[self fileURL] path]]]) {
NSLog(@"%@", [[self fileURL] path]);
NSDictionary *project = [NSDictionary dictionaryWithContentsOfFile:[NSString stringWithFormat:@"%@/Project.plist",[[self fileURL] path]]];
if([[project objectForKey:@"type"] isEqualToString:@"vote"]) {
[self openProject:[[self fileURL] path] type:@"vote"];
return YES;
} else if([[project objectForKey:@"type"] isEqualToString:@"quiz"]) {
[self openProject:[[self fileURL] path] type:@"quiz"];
return YES;
} else {
return NO;
}
} else {
return NO;
}
}
Run Code Online (Sandbox Code Playgroud)
那是我的readFromFileWrapper:ofType:error:
方法.这是我的openProject:type:
方法:
-(void)openProject:(NSString *)filepath type:(NSString *)type
{
NSLog(@"Opening project …
Run Code Online (Sandbox Code Playgroud) 假设我正在将一些应用程序移植到Mac OS X,在某些情况下,它会在其他平台下使用Xor操作呈现文本和插入符号.研究表明,Quartz绘图函数不支持XOR运算.我对么?还有什么替代方法可以将这些代码移植到Mac OS X?
将plist加载到NSArray后,我试图访问其嵌套数组.
NSArray *tree = [[NSArray alloc] initWithContentsOfFile:path];
for (NSArray *a in tree)
{
//Let's assume object at index 0 is always NSString
NSLog(@"Returning the string: %@ ", [a objectAtIndex:0]);
}
Run Code Online (Sandbox Code Playgroud)
调试器中的一些值:
tree __NSCFArray * 0x6856cf0
0 __NSCFString * 0x6818b70
1 __NSCFString * 0x682be10
2 __NSCFArray * 0x6856cd0
Run Code Online (Sandbox Code Playgroud)
所以我期待for语句跳过前两个NSStrings然后用NSArray执行.
然而步进一行:__ NSCFString*0x6818b70
繁荣,appcrash.
提示?
我正在尝试在目标C中创建一个基本方法(函数)并且遇到一些错误,这里是代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[self setupWebView];
}
- (void)setupWebView {
NSLog(@"Testing");
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
接收器类型'Reading'为实例消息不声明带有选择器'setupWebView'的方法
知道我做错了什么吗?
我是这堂课:
@interface PersonModel : NSObject
@property (nonatomic, weak) NSString *string;
@property (nonatomic, weak) NSMutableArray *array;
@end
Run Code Online (Sandbox Code Playgroud)
在另一个类中,我使用该字符串和数组.字符串很好,但数组变为null.我像往常一样启动它,像这样:
person.array = [[NSMutableArray alloc] init];
[person.array addObject:[object copy]];
NSLog(@"Array: %@", person.array);
Run Code Online (Sandbox Code Playgroud) 如何找出对象何时被释放?我正在监听kvo更改,但是在保留计数变为0之前对象被取消分配,并且我收到以下警告:
MyViewController类的实例0x16562be0已取消分配,而键值观察者仍在其中注册.观察信息被泄露,甚至可能被错误地附加到其他物体上.在NSKVODeallocateBreak上设置断点以在调试器中停止.这是目前的观察信息:
基本上我要做的是检测模型何时被解雇.我不能使用Delegate,因为呈现的viewControllers是动态的,我的mainViewController除了它们是UIViewController的子类之外不了解它们.
[anotherViewController addObserver:self forKeyPath:@"retainCount" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior context:nil];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
// Here check for the changes and see of the new value is 0 or not
}
Run Code Online (Sandbox Code Playgroud)
我也试着监听viewController的superView被改为nil
[anotherViewController.view addObserver:self forKeyPath:@"superView" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior context:nil];
Run Code Online (Sandbox Code Playgroud) 在xcode中运行分析工具后,我得到以下记忆泄漏
//Getting memeory leak warning here "Potential leak of an object allocated and stored into 'phones'
ABMultiValueRef phones = ABRecordCopyValue(ref, kABPersonPhoneProperty);
//Getting potential leak error for line below
if (ABMultiValueGetCount(ABRecordCopyValue(ref, kABPersonPhoneProperty))!=0)
{
//Getting potential leak error for line below
CFStringRef pNumber = ABMultiValueCopyValueAtIndex(phones,0);
phoneNumber = [NSString stringWithFormat:@"%@", (NSString *)pNumber];
NSString *contactFirstLast = [NSString stringWithFormat: @"%@ %@", firstName, lastName];
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这些泄漏?
我正在制作一个Xcode应用程序,我需要能够按下按钮并阅读一些文本.如果有人可以向我提供我需要在IBAction按钮的括号内使用的代码行,那将非常感激.谢谢.
任何人请回答我,如何写入位于我的资源文件夹中的plist文件.请为我写一个示例代码.
objective-c ×8
cocoa ×7
macos ×3
cocoa-touch ×2
ios ×2
foreach ×1
iphone ×1
memory-leaks ×1
nsarray ×1
nsdocument ×1
nswindow ×1
null ×1
plist ×1